说我有文件File_A,File_B和File_C.我编辑File_A和File_B故意,但File_C我刚刚添加了一些我不打算提交的调试代码.然后偶然我做了
hg commit -m "comment"
Run Code Online (Sandbox Code Playgroud)
如何恢复/回滚/退出File_C?基本上我很高兴能够去
hg update -r <oneRevBack> File_C
hg commit -m "put C back"
Run Code Online (Sandbox Code Playgroud)
但更新不采用过滤器AFAIK所以它也将恢复File_A和File_B.我可以复制File_C到某个地方,hg update然后将其复制回来,但这看起来很蹩脚.有没有办法在Mercurial中直接执行此操作?
Den*_*Den 31
如果你使用你想用具体的命令会工作hg revert,而不是hg update
hg revert -r .^ File_C
hg commit -m "put C back"
Run Code Online (Sandbox Code Playgroud)
在大多数情况下,VonC的解决方案非常完美.但是,如果回滚不是选项(例如,因为有问题的提交不是最后一个或因为您执行了复杂的部分提交),那么您可以使用不需要的更改的反向差异执行新的提交File_C:
hg diff -c REVISION --reverse File_C | hg import -m "Revert changes to File_C" -
Run Code Online (Sandbox Code Playgroud)
Where REVISION指的是File_C意外发生的提交.第一个命令为相关文件生成反向差异.它的输出通过管道传输hg import(不要忘记尾随-).
更新:您还可以使用backout命令:
hg backout -I File_C REVISION
hg commit -m "Revert changes of File_C in REVISION" File_C
Run Code Online (Sandbox Code Playgroud)
backout命令会更改您的工作副本,因为它会撤消对File_Crev中提交的更改.REVISION.然后显式提交恢复.
| 归档时间: |
|
| 查看次数: |
26353 次 |
| 最近记录: |