Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何";重开;最后一次git提交?_Git - Fatal编程技术网

如何";重开;最后一次git提交?

如何";重开;最后一次git提交?,git,Git,我在一个分支上工作,需要回到master上进行快速修复,所以我把工作交给了正在进行中的人 现在我回到了我的分支,我想回到我尚未提交但所有更改都已应用并准备提交的状态(即取消上一次提交,但我的更改没有丢失,它们显示在git status) 修改上一次提交对我来说不够好,因为我希望看到更改的文件和行(这样可以更容易地处理更改) 我知道git stash会是一个更好的解决方案,但为时已晚。我还倾向于混淆(或松开)我的隐藏提交,因为它们没有链接到分支。基本上有两种解决方法: 执行重置(在主分支或错误提交

我在一个分支上工作,需要回到master上进行快速修复,所以我把工作交给了正在进行中的人

现在我回到了我的分支,我想回到我尚未提交但所有更改都已应用并准备提交的状态(即取消上一次提交,但我的更改没有丢失,它们显示在
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^