在我的一个开发分支中,我对代码库进行了一些更改。在我能够完成正在使用的功能之前,我必须将当前分支切换为 master 来演示一些功能。但是仅使用 “git checkout master” 保留了我在开发分支中所做的更改,因此破坏了 master 中的某些功能。因此,我要做的是使用 “临时提交” 提交消息在开发分支上提交更改,然后为演示结帐母版。
既然我已经完成了演示,然后又可以在开发分支上工作了,那么我想删除我所做的 “临时提交”,同时仍然保留所做的更改。那可能吗?
git reset HEAD^
git commit --amend [-m … etc]
git reset HEAD^
git config --global alias.uncommit 'reset HEAD^'
git rebase -i <ref>
git stash save 'some message'
git stash list
git stash apply stash@{#}
git stash
git checkout <correct_branch>
git stash apply
我想你在找这个
git reset --soft HEAD~1
它撤消最近的提交,同时保留对该提交所做的更改以暂存。
是的,您可以删除提交而不删除更改:git reset @〜
对于使用 zsh 的用户,必须使用以下命令:
git reset --soft HEAD\^
在这里解释: https : //github.com/robbyrussell/oh-my-zsh/issues/449
如果 URL 失效,重要的部分是:
在命令中转义 ^
您也可以使用 HEAD〜,这样就不必每次都转义它了。
您正在寻找git reset HEAD^ --soft
或git reset HEAD^ --mixed
。
如文档所述,reset 命令有 3 种模式:
git reset HEAD^ --soft
撤消git commit
。更改仍存在于工作树(项目文件夹)+ 索引(- 缓存)中
git reset HEAD^ --mixed
撤消git commit
+ git add
。工作树中仍然存在更改
git reset HEAD^ --hard
就像您从未对代码库进行这些更改一样。更改从工作树中消失了。
git revert -n <sha>
git rebase -i