赞
踩
当我将新的变更记录提交为 git commit --amend
后,发现这需要修改云端上的提交记录,也就是 vscode 中会出现这张图
于是,我通过 git reset head^
撤销掉刚刚的提交。
reset 前:
reset 后:
但在撤销的同时,我也丢失了最新的提交记录。不过我并不担心,因为我还有云端上的记录,所以我可以简单的直接将云端上的提交记录合并到当前分支
git merge origin/note-readme
需求来了,由于我 reset 后的变更还存储在工作树中,所以此时我不能执行 merge 操作。这个时候,大多数人的想法应该是这样的:
嗯,这是一种解决方法,但这也太麻烦了,我们完全可以通过 stash 简化上面过程:
使用 stash 的步骤如下:
同样是拷贝变更内容,只不过我们是通过 git add . && git stash save "先拷贝变更内容"
命令进行拷贝!
然后合并云端分支 git merge origin/note-readme
现在,我们就恢复到最开始的时候了!也就是文章开始之前,还没之前 git commit --amend
之前
最后, 只需要再将刚刚变更的内容拷贝回来,就可以了。方式时运行 git stash pop
命令。
git add . && git commit --amend
git reset head^
撤销刚刚的变更(同时撤销了原有的提交)git add . && git stash save "先拷贝变更的工作树中的变更"
git merge origin/note-readme
再将云端的提交合并过来git stash pop
将刚刚拷贝的内容拿出来git add . && git commit -m "新的提交"
重新提交[!TIP]
git stash pop
命令默认会将藏匿区中最新的内容恢复到当前工作目录中,并从 stash 栈中删除它。但如果恢复的内容和已有内容出现冲突时,则不会自动从 stash 中删除。这个时候,你可以通过git stash drop ${0}
显式删除删除。其中的${0}
可能需要根据情况进行修改。你可以通过git stash list
查看 stash 栈中的所有内容。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。