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 revert:
$ 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
无论要回滚的提交在历史记录中的何处(在上面的示例中,回滚最后一次提交 - 任何提交都可以被回滚)。
结束问题
之后还需要做其他事情吗?
git revert
只是另一个提交,因此例如将更改推送到远程以便其他用户可以拉取/获取/合并更改,完成后就可以了。
您是否需要提交还原所做的更改,或者还原是否直接提交到存储库?
git revert
是一个提交 - 假设撤消单个提交是您想要执行的操作,则没有额外步骤。
显然,您需要再次推送,并可能向团队宣布。
的确 - 如果远程处于不稳定状态 - 向其余团队传达他们需要拉动以获取修复(回滚提交)的信息是正确的做法 :)。