造成原因:在使用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 查看。
流程图:借用一张流程图
还可以应用的场景:
1.git stash这种可以把代码暂时保存在本地且使得工作区干净的效果,可以让自己在工作中实现在未完成某个分支工作时,切换到其他分支去修复bug这种操作
2.有一次我登录模块的功能写在master分支了,但是代码只写了一半,又不敢提交,这时候就可以先用stash保存到本地,然后切分支,在用git stash apply把代码合并到想要的分支
平时用工具的可视化操作界面太多了,出点问题还是得去查,这里记录一下,以后可以自己方便来看。