我有一个使用Mercurial的项目,我独自工作,经常发现自己处于相同的状况:在处理某些事情时,我意识到,其他更改应该在我完成之前修复并完成我目前的工作。所以,我试图创建一个“匿名分支”
hg update --check PREVIOUS_REVISION
但不幸的是,它不适用于未提交的更改(我真的不想提交未完成的工作)。因此,每次,我都使用来源复制目录,还原到以前的版本,修复,提交,切换回我的工作副本,拉改变并继续我的工作......但是它需要花费太多时间,所以也许有更好的方法来实现它并且只需要一份来源?谢谢。
P.S。可能与How do I put a bunch of uncommitted changes aside while working on something else的问题相同,但我的想法是“是否可以将未完成的工作留在'原样'状态的默认分支中,然后在不加载外部补丁的情况下继续工作?” (无论如何,如果它是重复的话,请随意关闭它)
答案 0 :(得分:2)
解决“中断工作”任务的三种方法
hg shelve --all
,在干净的WC中进行必要的独立更改,提交,恢复工作的中间结果,保存在步骤1 hg unshelve
hg up <REV>
到之前的提交,make“必须在之前”更改,提交,返回更老的头,合并头,继续工作我更喜欢(并且总是用于不同的任务)MQ
<强>增加:强>
对于“干净历史”的粉丝和崇拜者,匿名分支工作流程中的一个可能的变化(避免合并)
hg commit -m "Unfinished work"
(rev M)hg up -r "tip^1"
hg commit -m "Base changes"
(rev N)hg rebase -r M -d N
(线性化历史记录)hg up
hg commit --amend -m "Full dependent change"
PS:我在逆向变更集中看不到任何不好,即在CSET中写a = something(data)
,在CSET + 1中写function something (int subject) {...}
答案 1 :(得分:0)
提交未完成的提交并不是件坏事。它可以帮助您在硬盘崩溃等环境中生存。为什么不用“正在进行中”这样的提交消息提交正在进行的代码,做你需要做的其他事情,然后继续处理它?</ p>
根据定义,旧提交尚未完成。这就是为什么你在他们之后承诺了更多的东西。不要担心旧存储库的状态。
当然,您应该通过功能分支来解决问题,这样您就可以将代码推送到非default
的分支。
答案 2 :(得分:0)
如果'必须'更改是不同的代码,为什么不hg record
,并选择'必须'帅哥并在其他代码之前提交。