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 是一个提交-假设您要还原单个提交,则没有多余的步骤。
显然,您需要再次推动并可能向团队宣布。
的确,如果遥控器处于不稳定状态,则与团队的其他成员进行沟通以获取解决方案(还原提交)将是正确的选择:)。