Android Git 拉取代码报错:error: cannot pull with rebase: Your index contains uncommitted changes.

简介: 造成原因:在使用Android Studio中Git的Commit Directory 将本地更改的代码保存到本地后,点击commit,发现提交不上去,发现本地有代码,这时候拉取代码,报错:cannot pull with rebase: Your index contains uncommitted changes.表示我的索引有未提交的改变

造成原因:在使用Android Studio中Git的Commit Directory 将本地更改的代码保存到本地后,点击commit,发现提交不上去,发现本地有代码,这时候拉取代码,报错:cannot pull with rebase: Your index contains uncommitted changes.表示我的索引有未提交的改变


解决办法:


打开Android Studio的Terminal控制台,


依次输入指令:


1.git stash


能够将所有未提交的修改(工作区和暂存区)保存至堆栈中,用于后续恢复当前工作目录。意思就是把你 commit 到本地仓库的内容,取出来放到暂存区(stash)(这时你的工作区是干净的)


2.git pull --rebase


从远端拉取代码到本地,由于工作区是干净的,所以不会有冲突


3.git stash pop(git stash apply)


从暂存区把你之前提交的内容取出来,跟拉下来的代码合并



1.git stash pop :会将当前stash中的内容弹出,并应用到当前分支对应的工作目录上。该命令将堆栈中最近保存的内容删除(栈是先进后出),这样有时候会发现代码没了。


保守点可以用:git stash apply :将堆栈中的内容应用到当前目录,不同于git stash pop,该命令不会将内容从堆栈中删除,也就说该命令能够将堆栈的内容多次应用到工作目录中,适应于多个分支的情况。


2.如果使用 git stash pop 后有冲突时,如何撤销?


可以使用 git reset --hard ,即可撤销 git stash pop 操作,将当前分支状态恢复。


而该操作后,git stash 暂存区的记录也不会被删除,可通过 git stash show 查看。


流程图:借用一张流程图

c82072e95b6b81bf9b617a2bb4fe33d.png



还可以应用的场景:


1.git stash这种可以把代码暂时保存在本地且使得工作区干净的效果,可以让自己在工作中实现在未完成某个分支工作时,切换到其他分支去修复bug这种操作


2.有一次我登录模块的功能写在master分支了,但是代码只写了一半,又不敢提交,这时候就可以先用stash保存到本地,然后切分支,在用git stash apply把代码合并到想要的分支



平时用工具的可视化操作界面太多了,出点问题还是得去查,这里记录一下,以后可以自己方便来看。

————————————————


相关文章
|
人工智能 前端开发 Java
用git rebase命令合并开发阶段中多条commit提交记录
通过 `git rebase`,可以合并多个提交记录,使开发历史更简洁清晰。操作分为 6 步:查看提交历史 (`git log --oneline`)、设置需合并的提交数 (`git rebase -i HEAD~N`)、修改动作标识为 `s`(squash)、保存退出编辑、调整提交信息、强制推送至远程仓库 (`git push -f`)。此方法适合清理本地无关提交,但若有团队协作或冲突风险,需谨慎使用以避免问题。
2716 60
|
XML JavaScript Android开发
【Android】网络技术知识总结之WebView,HttpURLConnection,OKHttp,XML的pull解析方式
本文总结了Android中几种常用的网络技术,包括WebView、HttpURLConnection、OKHttp和XML的Pull解析方式。每种技术都有其独特的特点和适用场景。理解并熟练运用这些技术,可以帮助开发者构建高效、可靠的网络应用程序。通过示例代码和详细解释,本文为开发者提供了实用的参考和指导。
615 15
|
开发工具 git
git的rebase和merge的区别
通过这些内容和示例,您可以深入理解Git的 `rebase`和 `merge`操作及其区别,选择合适的方法进行分支管理,提高版本控制的效率和规范性。希望这些内容对您的学习和工作有所帮助。
3206 5
|
开发工具 git 开发者
git rebase的使用
通过这些思维导图和分析说明表,您可以更直观地理解Git rebase的概念、用法和应用场景。希望本文能帮助您更高效地使用Git rebase,提高代码管理的效率和质量。
1564 17
|
开发工具 git 开发者
git rebase的使用
通过这些思维导图和分析说明表,您可以更直观地理解Git rebase的概念、用法和应用场景。希望本文能帮助您更高效地使用Git rebase,提高代码管理的效率和质量。
3282 13
|
前端开发 持续交付 开发工具
理解前端开发中的 Git - Rebase
Git Rebase 是前端开发中常用的一种版本控制操作,用于将一个分支的更改整合到另一个分支。与合并(Merge)不同,Rebase 可以使提交历史更加线性整洁,有助于保持代码库的清晰和可维护性。通过 Rebase,开发者可以将特性分支的改动应用到主分支上,同时保留或重写提交记录。
1039 10
|
网络安全 开发工具 git
解决fatal:remote error:You can’t push to git://github.com/username/*.g
通过上述诊断与修复步骤,绝大多数的推送错误都能得到有效解决,确保您的Git工作流顺畅无阻。
837 1
|
开发工具 git 索引
$ git revert -m v1.0.21 6003eb5f5b455f0a3dfb74f48f63878e7 error: option `mainline' expect
$ git revert -m v1.0.21 6003eb5f5b455f0a3dfb74f48f63878e7 error: option `mainline' expect
|
Android开发 Docker 容器
docker中编译android aosp源码,出现Build sandboxing disabled due to nsjail error
在使用Docker编译Android AOSP源码时,如果遇到"Build sandboxing disabled due to nsjail error"的错误,可以通过在docker run命令中添加`--privileged`参数来解决权限不足的问题。
3291 1
|
开发工具 git 开发者