git revert 进行新的提交
git revert
只是创建一个与现有提交相反的新提交。
它使文件保持相同的状态,就好像已恢复的提交从未存在过一样。例如,考虑以下简单示例:
$ cd /tmp/example
$ git init
Initialized empty Git repository in /tmp/example/.git/
$ echo "Initial text" > README.md
$ git add README.md
$ git commit -m "initial commit"
[master (root-commit) 3f7522e] initial commit
1 file changed, 1 insertion(+)
create mode 100644 README.md
$ echo "bad update" > README.md
$ git commit -am "bad update"
[master a1b9870] bad update
1 file changed, 1 insertion(+), 1 deletion(-)
在此示例中,提交历史记录有两次提交,最后一次是错误的。使用 git 恢复:
$ git revert HEAD
[master 1db4eeb] Revert "bad update"
1 file changed, 1 insertion(+), 1 deletion(-)
日志中将有 3 个提交:
$ git log --oneline
1db4eeb Revert "bad update"
a1b9870 bad update
3f7522e initial commit
因此,所发生的事情有一致的历史记录,但文件就像错误的更新从未发生过一样:
cat README.md
Initial text
要恢复的提交位于历史记录中的哪个位置并不重要(在上面的示例中,最后一次提交被恢复 - 任何提交都可以恢复)。
结束语
之后还需要做其他事情吗?
A git revert
is just另一个提交,例如推送到远程,以便其他用户可以拉取/获取/合并更改,然后您就完成了。
您是否必须提交所做的更改恢复或恢复直接提交到存储库?
git revert
is提交 - 假设您想要恢复单个提交,则没有额外的步骤。
显然,您需要再次推动并可能向团队宣布。
事实上 - 如果远程处于不稳定状态 - 与团队的其他成员沟通,他们需要拉动以获取修复(恢复提交)将是正确的做法:)。