“恢复”,“修改”,“回滚”和“撤消”提交之间有什么区别?

时间:2015-01-27 08:59:36

标签: git rollback undo git-revert amend

虽然我经常使用Git,但我还是初学者。

有时候,我犯了一个错误,但在我提交之后才发现。在这一点上,我通常不得不花费很长时间在互联网上寻找我应该用来摆脱它的命令(在推送之前)。

每当发生这种情况时,我发现自己想知道我经常遇到的四个术语之间有什么区别:

  • 还原,
  • 修改,
  • 回滚,
  • 撤消。

我认为现在是时候一劳永逸地学习这些差异了。它们是什么?

2 个答案:

答案 0 :(得分:9)

术语还原修正在Git中具有明确定义的含义。相比之下, rollback undo 没有这么明确的含义,并且可以解释。

恢复提交...

...意味着创建(在当前分支上)新的提交,该提交应用另一个提交引入的反向更改。它是纠正已经与他人共享的回购中问题的首选方法,因为它不涉及任何破坏(即重写历史)。

要还原<commit>标识的提交,只需运行

即可
    git revert <commit>

修改提交......

...意味着更换&#34;当前&#34;由具有相同父母的新人提交; How does git commit --amend work, exactly?

中的更多详情

enter image description here

请注意

  • 修改您已经推送到共享遥控器的提交是不好的做法,因为它是历史重写的形式(它&#34;删除&#34;最近的提交,您的协作者可能已基于他们的工作);
  • 你只能修改给定分支上的最后一次提交;要重写旧的提交,你需要带出大枪(例如交互式rebase)。

    要修改提交,请进行所有必需的更改并暂存,然后运行

    git commit --amend
    

    此处不需要指定任何提交,因为当前分支上的最后一次提交是将要修改的提交。然后会弹出您的编辑器,让您有机会修改提交消息。

回滚......

...通常意味着丢弃(或存储)任何本地更改并将分支重置为提交(或者只是检查提交,但这会使您处于分离-HEAD状态)在提交事务开始之前弄乱。使用

    git reset <commit-before-things-started-to-go-belly-up>

撤消提交...

...可能意味着,根据上下文,还原修改提交。

答案 1 :(得分:1)

git --amend 您应该仅对尚未推送到另一个Git存储库的公共分支的提交使用git --amend命令。 git --amend命令创建一个新的提交ID,人们可能已将其工作基于现有提交。 在这种情况下,他们需要根据新提交

迁移他们的工作

git revert 您可以通过git revert命令恢复提交。此命令将还原提交的更改。 此类提交对于记录撤消更改非常有用。

这是[在此输入链接描述] [1]

[1]:关于回滚技术的How do you roll back (reset) a Git repository to a particular commit?