Dav*_*ver 12 version-control mercurial dvcs bazaar
Bazaar有一个很好的uncommit
命令,它简单地撤消了最后的提交.Mercurial有没有相应的东西?
编辑:Bazaar的uncommit命令不会修改文件 - 它会删除最后一次提交和关联数据(例如,当您注意到提交消息中存在拼写错误或者未添加应该存在的文件时,这很有用) .
例如:
$ bzr ci -m "Fixed a proooblem" <-- problem is misspelt
$ bzr uncommit
...
$ bzr ci -m "Fixed a problem" <-- Exactly as if the first commit was correct.
Run Code Online (Sandbox Code Playgroud)
Mar*_*ler 23
您需要该hg rollback
命令,但如果您使用的是Mercurial 2.2或更高版本,请参阅下文.
rollback命令将从存储库中删除最后一个事务.提交是一个事务,因此您可以将其用作
% hg commit -m 'My elaburate bugfix.' foo.c foo.h
% hg rollback
% hg commit -m 'My elaborate bugfix.' foo.c foo.h
Run Code Online (Sandbox Code Playgroud)
在回滚之后,文件将再次被视为已修改,这意味着第二次提交将存储与第一次相同的更改,但具有更好的提交消息.
注意: hg rollback
比简单的"uncommit"功能更强大,如果你不小心你可以用它来扔掉工作.扔掉一个提交
$ hg commit -m 'My big and very difficult bugfix'
$ hg pull --update
$ hg rollback
Run Code Online (Sandbox Code Playgroud)
您现在已经丢失了最后一次提交,并且由于您将工作副本更新为其他修订版,因此该提交中的更改已消失.因此,hg rollback
如果您确定hg commit
实际上是在工作副本上运行的最后一个命令,那么您应该仅用于撤消提交.
此外,如果您没有在命令行上提交提交消息,那么您不能只按向上箭头两次以在回滚后重做提交.但是,Mercurial 1.5及更高版本将保存您的上一次提交消息,.hg/last-message.txt
以便您可以在回滚后再次找到它.
水银2.2有一个新的--amend
标志了hg commit
.这让你用新的修改修改最后一次提交.它只是将列出的更改hg status
合并到父提交中,就像您已经回滚并再次提交一样.
也许hg backout tip
?我推荐http://hgbook.red-bean.com/read/finding-and-fixing-mistakes.html了解所有细节hg backout
,它有何不同hg revert
,以及许多相关主题,但如果我不明白uncommit
它是什么,它看起来似乎完全等同于hg backout tip
.
编辑:在评论中,你现在澄清了你想要"删除历史" - 这很难(除非你在抽奖中非常快,也许; - )...再次根据红豆书:
由于Mercurial将历史视为累积 - 每次变更都建立在之前的所有变化之上 - 您通常无法让灾难性的变化消失.一个例外是当您刚刚提交更改时,它尚未被推送或拉入另一个存储库.那时你可以安全地使用hg rollback命令
所以,如果你只是想尝试 "让它消失"(和你足够幸运,它尚未推或拉其他地方),则hg rollback
可能是一个更好的办法!
归档时间: |
|
查看次数: |
3253 次 |
最近记录: |