Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在提交其他更改之前,如何修复并提交Mercurial中的一个更改?_Mercurial_Workflow - Fatal编程技术网

在提交其他更改之前,如何修复并提交Mercurial中的一个更改?

在提交其他更改之前,如何修复并提交Mercurial中的一个更改?,mercurial,workflow,Mercurial,Workflow,我有一个使用Mercurial的项目,我独自一人在做,我经常发现自己一次又一次地处于同样的情况:在做某件事的过程中,我意识到,在我完成当前的工作之前,其他的更改应该被修复并提交。所以,我尝试创建一个“匿名分支” 但不幸的是,它不能处理未提交的更改(我真的不想提交未完成的工作)。所以,每次,我用源代码复制目录,恢复到以前的版本,修复,提交,切换回我的工作副本,提取更改并继续我的工作。。。但这需要太多的时间,所以也许有更好的方法来做到这一点,而仅仅是一个副本的来源?多谢各位 顺便说一句,这可能与问题

我有一个使用Mercurial的项目,我独自一人在做,我经常发现自己一次又一次地处于同样的情况:在做某件事的过程中,我意识到,在我完成当前的工作之前,其他的更改应该被修复并提交。所以,我尝试创建一个“匿名分支”

但不幸的是,它不能处理未提交的更改(我真的不想提交未完成的工作)。所以,每次,我用源代码复制目录,恢复到以前的版本,修复,提交,切换回我的工作副本,提取更改并继续我的工作。。。但这需要太多的时间,所以也许有更好的方法来做到这一点,而仅仅是一个副本的来源?多谢各位


顺便说一句,这可能与问题相同,但我的想法是“是否可以将默认分支中未完成的工作保持“原样”状态,然后在不加载外部补丁的情况下对其进行处理?”(无论如何,如果它是重复的,请随时关闭它)

有未完成的提交不是一件坏事。它可以帮助你在硬盘崩溃等情况下生存下来。为什么不用“this is progress”这样的提交消息提交您的进行中代码,做您需要做的任何事情,然后继续处理它

根据定义,旧的提交是未完成的。这就是为什么你在他们之后做了更多的事情。不要担心旧存储库的状态


当然,当您在特性分支中工作时,您应该进行补救,这样您就可以将代码推送到一个不是默认分支的分支,这是解决“间歇工作”任务的三种方法

  • 使用:保存所有当前更改
    hg shelve--all
    ,在clean WC中进行所需的独立更改,提交,恢复工作的中间结果,保存在步骤1
    hg unshelve
  • 使用匿名分支:按原样提交您的WC,
    hg up
    到上一次提交,进行“必须在”更改,提交,返回到旧头,合并头,继续工作
  • 使用:作为起点,第一章:“不耐烦者的Mq”(在您的案例中,qrefresh和qfinish之间将是纯提交)
我更喜欢(并且总是用于不同的任务)MQ

添加:

对于“干净历史”的粉丝和仰慕者,匿名分支工作流中的一个可能更改(避免合并)

  • hg提交-m“未完成的工作”
    (修订版m)
  • hg up-r“tip^1”
  • hg提交-m“基本更改”
    (修订版N)
  • hg-rebase-rm-dn
    (线性化历史)
  • hg up
  • hg提交--amend-m“完全依赖更改”

PS:我看不出变更集的反向集合有什么不好的地方,即在CSET中写入
a=something(data)
,在CSET+1中写入
function something(int subject){…}
如果“必须”变更是不同的代码块,为什么不
hg record
,然后选择“必须”的大块头,在其他人之前提交。

所以,实际上我的问题是重复的…:-/好的,无论如何谢谢:)@OlegKuznetsov-虽然它没有被标记为重复,但它不是重复的为什么添加
--检查
?如果删除
--check
标志,它将更新到上一版本,同时保留(就地合并)您的本地更改。然后,一旦进入上一个版本,就可以提交要更改的位,它将创建一个匿名分支。
hg update --check PREVIOUS_REVISION