"revert", "amend", "rollback"和"undo"这四个术语在撤销提交时有什么区别?

3 浏览
0 Comments

"revert", "amend", "rollback"和"undo"这四个术语在撤销提交时有什么区别?

为了帮助我在日常使用中更好地了解Git,以下是这些术语的区别:

- revert(还原):撤销一个已经提交的变更,并创建一个新的提交来撤销之前的变更。

- amend(修正):修改最后一次提交的内容或者提交信息。

- rollback(回滚):撤销多个提交,将代码库状态恢复到之前的某个特定版本。

- undo(撤销):撤销最后一次操作,将代码库状态恢复到之前的状态。

它们分别是什么,以及它们的作用是什么?

0
0 Comments

问题的出现原因是人们对于Git中的“revert”、“amend”、“rollback”和“undo”这些命令的含义和用法存在一定的混淆。为了解决这个问题,我们需要对每个命令进行解释和比较。

首先,我们来看一下git --amend命令。该命令只适用于尚未推送到另一个Git存储库的公共分支的提交。git --amend命令会创建一个新的提交ID,而人们可能已经基于现有的提交进行了工作。在这种情况下,他们需要根据新的提交迁移他们的工作。

其次,我们来看一下git revert命令。通过git revert命令可以撤销一个提交的更改。这些提交对于记录撤销更改是很有用的。在链接中有一个关于回滚技术的问题,可以进一步了解如何回滚(重置)Git存储库到特定的提交。

接下来,我们来看一下rollback这个词。在给定的上下文中,rollback通常指的是回滚操作。回滚是指将数据库、应用程序或系统状态恢复到之前的某个点或状态的过程。虽然这个词在Git中没有特定的命令,但可以使用其他命令来实现回滚操作,如git revert或git reset。

最后,我们来看一下undo这个词。在Git中,没有一个特定的命令叫做git undo,但可以使用其他命令来撤销操作。例如,可以使用git reset命令来撤销最后一次提交,或者使用git checkout命令来撤销对文件的更改。

git --amend命令用于修改尚未推送的提交,git revert命令用于撤销提交的更改,rollback指的是回滚操作,可以使用其他命令来实现,而undo没有特定的命令,但可以使用其他命令来撤销操作。

0
0 Comments

出现的原因:这篇文章是为了解释Git中撤销(commit)更改的几种方法,即revert、amend、rollback和undo之间的区别。

解决方法:文章中介绍了几个Git命令来撤销或回滚(commit)的更改。

文章内容如下:

撤销更改:git checkout、git revert、git reset、git clean

- git revert:该命令撤销了一个提交的更改,但在日志中保留了记录。

- git reset:该命令撤销了一个提交的更改,但不在日志中保留记录,即将回滚到撤销的提交。注意:这是一个破坏性的操作,使用该命令时要小心。

- git reset --soft HEAD^:撤销上一个提交,将更改放入暂存区。

- git reset --hard HEAD^:撤销上一个提交及所有更改。

- git reset --hard HEAD^^:撤销上两个提交及所有更改。

- git commit --amend:amend意味着将更改添加到最后一次提交中。有时我们忘记将文件添加到提交中,例如忘记了abc.txt文件,我们可以使用以下命令添加:git add abc.txt和git commit --amend -m "New commit message"。

注意:我们在这里没有确切名称为rollback和undo的命令或选项。

0
0 Comments

撤销提交(revert)和修正提交(amend)在Git中具有明确定义的含义。相比之下,回滚(rollback)和撤销(undo)没有这样明确定义的含义,并且可以有不同的解释。

撤销提交意味着在当前分支上创建一个新的提交,该提交应用了另一个提交引入的相反变化。这是修复已经与他人共享的存储库中的问题的首选方法,因为它不涉及任何破坏(即重写历史)。

要撤销由标识的提交,只需运行

git revert

修正提交意味着用一个具有相同父级的新提交替换“当前”提交;更多细节请参见git commit --amend如何工作?

请注意:

  • 修正已经推送到共享远程的提交是不好的实践,因为它是一种重写历史的形式(它“删除”了最近的提交,而你的合作者可能已经基于它们的工作);
  • 你只能修改给定分支上的最后一个提交;要重写旧的提交,你需要使用更强大的工具(例如交互式变基)。

要修正一个提交,进行所有所需的更改并将它们暂存,然后运行

git commit --amend

这里不需要指定任何提交,因为当前分支上的最后一个提交将被修正。然后你的编辑器将弹出,让你有机会修改提交消息。

回滚通常意味着放弃(或存储)任何本地更改,并将分支重置到一个提交(或只是检出一个提交,但这将使你处于分离的HEAD状态)之前的提交,即事情开始变得混乱的提交。使用

git reset

撤销提交可能意味着,根据上下文的不同,

  • 撤销一个提交,
  • 修正一个提交,
  • 通过交互式变基删除一个提交。

回滚与撤销有什么好的使用情况,而不是撤销?我能想到的唯一一个不关心撤销历史记录的时候是当我强制回退到origin时。有时你应该使用其中之一吗?

因为重置一个分支是一种重写历史的形式,如果该历史已经被推送/共享给他人,就不应该这样做。相比之下,撤销在这方面是完全安全的,因为它只是向现有历史追加一个提交。

0