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

问题描述 投票:0回答:3

为了帮助我了解 git,以便我可以日常使用它,以下之间的区别是什么:

  • 恢复
  • 修改
  • 回滚
  • 撤消

他们是什么以及他们做什么?

git rollback undo git-revert git-amend
3个回答
49
投票

术语 revertamend 在 Git 中具有明确定义的含义。相比之下,rollbackundo没有如此明确的含义,并且可以解释。

恢复提交...

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

要恢复由

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

git revert <commit>

修改提交...

...意味着用具有相同父级的新提交替换“当前”提交;更多详细信息,请参见 git commit --amend 到底是如何工作的?

enter image description here

请注意

  • 修改已推送到共享远程的提交是不好的做法,因为这是一种历史重写形式(它“删除”最近的提交,您的协作者可能已经基于该提交进行了工作);
  • 您只能修改给定分支上的最后一次提交;要重写旧的提交,您需要拿出大武器(例如交互式变基)。

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

git commit --amend

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

回滚...

...通常意味着在提交一个事情开始变得混乱的地方之前,丢弃(或隐藏)任何本地更改并将分支重置为提交(或者只是检查提交,但这会使您处于分离头状态) 。使用

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

撤消提交...

...可以表示,根据上下文,

  • 恢复提交,
  • 修改提交,
  • 通过交互式变基删除提交。

19
投票

撤消更改

git checkout
git revert
git reset
git clean

  • git revert
    :此命令恢复提交的更改。它在日志中保留跟踪记录。

  • git reset
    :此命令恢复提交的更改。它不会在日志中保留跟踪记录,即重置为恢复的提交。 注意: 这是一个破坏性函数。使用此命令必须小心。

  • git reset --soft HEAD^
    撤消上次提交,将更改放入暂存中

  • git reset --hard HEAD^
    撤消上次提交和所有更改

  • git reset --hard HEAD^^
    撤消最后 2 次提交和所有更改

  • git commit --amend
    其中修改表示添加到最后一次提交。有时我们忘记添加要提交的文件。例如忘记了 abc.txt 文件,我们可以添加如下:
    git add abc.txt
    git commit --amend -m "New commit message"

注意:在这个确切的名称上,无论是动词还是选项,我们都没有 rollbackundo


2
投票

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

git 恢复 您可以通过 git revert 命令恢复提交。此命令恢复提交的更改。 此类提交对于记录更改已撤回很有用。

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

[1]:如何将 Git 存储库回滚(重置)到特定提交?有关回滚技术

© www.soinside.com 2019 - 2024. All rights reserved.