如何";重开;最后一次git提交?
我在一个分支上工作,需要回到master上进行快速修复,所以我把工作交给了正在进行中的人 现在我回到了我的分支,我想回到我尚未提交但所有更改都已应用并准备提交的状态(即取消上一次提交,但我的更改没有丢失,它们显示在如何";重开;最后一次git提交?,git,Git,我在一个分支上工作,需要回到master上进行快速修复,所以我把工作交给了正在进行中的人 现在我回到了我的分支,我想回到我尚未提交但所有更改都已应用并准备提交的状态(即取消上一次提交,但我的更改没有丢失,它们显示在git status) 修改上一次提交对我来说不够好,因为我希望看到更改的文件和行(这样可以更容易地处理更改) 我知道git stash会是一个更好的解决方案,但为时已晚。我还倾向于混淆(或松开)我的隐藏提交,因为它们没有链接到分支。基本上有两种解决方法: 执行重置(在主分支或错误提交
git status
)
修改上一次提交对我来说不够好,因为我希望看到更改的文件和行(这样可以更容易地处理更改)
我知道git stash会是一个更好的解决方案,但为时已晚。我还倾向于混淆(或松开)我的隐藏提交,因为它们没有链接到分支。基本上有两种解决方法:
主分支或错误提交的任何分支上):
如前所述,HEAD~1
是一个相对地址
git commit --amend
在这种情况下,您可以假装什么也没发生,在您计划执行真正的提交时,进一步处理您的分支并调用命令。您可以使用所有更改和(可选)新消息覆盖上一次提交形式上:正如你提到的那样,进行
git隐藏确实更好,只是说对于那些偶然看到这个答案并认为以上是普遍做法的人来说(事实并非如此)。你应该使用git reset HEAD~1
(没有--硬选项)
它将完全执行您想要的操作,HEAD~1在这里表示您希望重置一次提交,从历史记录的开头(顶部)开始计数
这将不会触及文件系统上的任何文件,因此git现在会将您编辑的文件视为已更改但未提交。据我所知,您希望撤消对分支的最新提交,同时保持提交过程中的所有更改完好无损
您可能希望尝试使用git reset命令,如下所示:
git reset --soft HEAD^
这将接受您最近的提交并撤消它,同时保留所有的更改。对您的分支进行软重置:签出后,运行git reset--soft HEAD^
。这将使您的分支指向困扰您的提交之前的提交,而不改变索引或工作树。也许最好显式地声明--soft
。我知道默认行为不太可能改变,但如果改变了,一些答案可能已经过时。同意。但无论如何,它已经有一段时间没有被更改了,所以在没有--soft
:)的情况下使用它可能仍然是安全的
git reset --soft HEAD^