What are the differences between 'revert', 'amend,' 'rollback', and 'undo' a commit?
虽然我经常使用git,但我还是个初学者。
有时候,我犯了一个错误,但只有在我犯了错误之后才发现它。在这一点上,我通常要花很长时间在互联网上寻找我应该用来摆脱它的命令(在推之前)。
每次发生这种情况,我都会想,我通常遇到的四个术语之间的区别是什么:
- 还原,
- 修改,
- 回降,
- 撤消。
我已经到了最后一次了解这些差异的时候了。他们是什么?
术语的恢复和修订在Git中具有明确的含义。相反,rollback和undo没有这样一个定义明确的含义,并且易于解释。
正在还原提交……意味着(在当前分支上)创建一个新的提交,应用另一个提交引入的反向更改。这是纠正回购协议中已与其他人共享的问题的首选方法,因为它不涉及任何破坏(即重写历史)。
要恢复由
1 | git revert <commit> |
修改承诺…
…意味着将"当前"提交替换为具有相同父级的新提交;更详细的内容是Git提交如何修改工作,准确地说?
。
注意
- 修改您已经推送到共享远程的提交是一种糟糕的实践,因为它是一种历史重写形式(它"删除"最新的提交,而您的合作者可能已经基于该提交进行了工作);
您只能修改给定分支上的最后一个提交;要重写较旧的提交,您需要拿出大炮(例如交互式重新平衡)。
要修改提交,请进行所有必需的更改并进行阶段化,然后运行
1git commit --amend号
这里不需要指定任何提交,因为当前分支上的最后一个提交是将要修改的提交。然后,您的编辑器将弹出,给您机会修改提交消息。
正在回滚…
…通常意味着在提交之前丢弃(或存储)任何本地更改,并将分支重置为提交(或简单地签出提交,但这会使您处于分离的头部状态),在提交之前,事情开始变得混乱。使用
1 | git reset <commit-before-things-started-to-go-belly-up> |
撤消提交…
…可能意味着,根据上下文,恢复或修改提交。
撤销变更:
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" 。
git—修正您应该只对提交使用git--amend命令,而提交尚未被推送到另一个git存储库的公共分支。git--amend命令创建了一个新的提交ID,人们可能已经将他们的工作基于现有的提交。在这种情况下,他们需要根据新的提交迁移他们的工作。
Git还原您可以通过git revert命令恢复提交。此命令还原提交的更改。这样的承诺对于记录变更被撤回是有用的。
这里是[在此处输入链接说明][1]
[1]:如何将Git存储库回滚(重置)到特定的提交?关于回滚技术