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
要恢复的提交在历史记录中的哪个位置无关紧要(在上面的示例中,最后一次提交被恢复 - 任何提交都可以恢复)。
结束问题
之后你还需要做其他事情吗?
Agit revert
只是另一个提交,因此例如推送到远程,以便其他用户可以拉/取/合并更改,您就完成了。
您是否必须提交所做的更改还原或还原直接提交到存储库?
git revert
是一个提交 - 假设恢复单个提交是您想要做的,没有额外的步骤。
显然,您需要再次推动并可能向团队宣布。
确实 - 如果遥控器处于不稳定状态 - 与团队的其他成员沟通他们需要拉动以获得修复(恢复提交)将是正确的做法:)。