How to use Git Revert
如何使用
这听起来像是一个重复的问题,但当人们问它时,通常会使用
然后,当有人问如何使用
在你意识到这一点之前,8个不同的人出现了,他们用自己独特的方式来拯救OP的屁股,所有这些都在你的头上。
所以,让我们试着写一篇关于
一个场景:你已经两次对大师和它的坏承诺。你推了别人,别人给你带来了不好的改变。
你想撤销它。这不是你可以自己在代码中提交撤销的东西,比如说某个向导或包管理器在整个地方改变了很多东西——你只想把它放回原来的样子。
这就是源代码管理的全部内容。我相信这很容易。
好吧,你要用
在运行了
很明显,你需要再推一次,可能会向球队宣布你的球。
Git Revert进行新的提交
它使文件保持相同的状态,就好像恢复的提交从未存在过一样。例如,考虑下面的简单示例:
1 2 3 4 5 6 7 8 9 10 11 12 13 | $ 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还原:
1 2 3 | $ git revert HEAD [master 1db4eeb] Revert"bad update" 1 file changed, 1 insertion(+), 1 deletion(-) |
号
日志中有3个提交:
1 2 3 4 | $ git log --oneline 1db4eeb Revert"bad update" a1b9870 bad update 3f7522e initial commit |
因此,已经发生的事情有一个一致的历史记录,但是这些文件好像从未发生过错误的更新:
1 2 | cat README.md Initial text |
。
在历史记录中,要恢复的提交在哪里并不重要(在上面的示例中,最后一次提交是被恢复的-任何提交都可以被恢复)。
结语问题do you have to do something else after?
号
Do you have to commit the changes revert made or does revert directly commit to the repo?
号
Obviously you'll need to push again and probably announce to the team.
号
事实上,如果远程处于不稳定状态,那么与团队的其他成员通信,他们需要拉来获取修复(恢复提交)是正确的做法:)。
使用git revert,如下所示:
之后的步骤与任何其他提交相同。
在同一个对话中,
尤其是,那些习惯于SVN或P4的人,如果想放弃对文件的未提交更改,在被告知他们实际上想要
类似地,其他VCSE中的
至于你关于回复的实际问题…
Okay, you're going to use git revert but how?
号
江户十一〔11〕。
And after running git revert do you have to do something else after? Do you have to commit the changes revert made or does revert directly commit to the repo or what??
号
默认情况下,
--edit
With this option, git revert will let you edit the commit message prior to committing the revert. This is the default if you run the command from a terminal.
--no-commit
Usually the command automatically creates some commits with commit log messages stating which commits were reverted. This flag applies the changes necessary to revert the named commits to your working tree and the index, but does not make the commits. In addition, when this option is used, your index does not have to match the HEAD commit. The revert is done against the beginning state of your index.
This is useful when reverting more than one commits' effect to your index in a row.
号
特别是,默认情况下,它为您要恢复的每个提交创建一个新的提交。您可以使用
我通过运行"git revert commit id"恢复了一些提交,例如:
1 | git revert b2cb7c248d416409f8eb42b561cbff91b0601712 |
然后,系统提示我提交还原(就像运行"git commit"时一样)。我的默认终端程序是vim,所以我运行:
1 | :wq |
。
最后,我将更改推送到存储库:
1 | git push |
。