Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.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_Push_Commit - Fatal编程技术网

Mercurial说;中止:未完成的未提交更改“;,我不知道';我不想承诺

Mercurial说;中止:未完成的未提交更改“;,我不知道';我不想承诺,mercurial,push,commit,Mercurial,Push,Commit,场景:本地回购,在我离开办公室之前 $ hg status M important/update1 M another/important/update2 M work/in/progress 我想提交并推送重要/update1和重要/update2,因为我想在回家后将这些文件拉到本地repo。我还没有准备好提交工作/进行中/进行中。事实上,它甚至不能正确解析。该文件在我的IDE中打开,我只想保持原样 现在我做到了:(匆忙地,电车三分钟后就开了) 嗯。同事推了一些东西。。。(电车两分钟后开出

场景:本地回购,在我离开办公室之前

$ hg status

M important/update1
M another/important/update2
M work/in/progress
我想提交并推送重要/update1重要/update2,因为我想在回家后将这些文件拉到本地repo。我还没有准备好提交工作/进行中/进行中。事实上,它甚至不能正确解析。该文件在我的IDE中打开,我只想保持原样

现在我做到了:(匆忙地,电车三分钟后就开了)

嗯。同事推了一些东西。。。(电车两分钟后开出……)

废话。我需要同事的更新,但我不会提交工作/进行中/进行中,更不用说推送了!我只是错过了电车

您如何处理此问题?

使用暂时搁置/保存正在进行的工作。

我通常使用,您也可以在cmdline上激活它:

[extensions]
tortoisehg.util.hgshelve =
现在,您可以使用以下命令:

$ hg shelve
hg diff > mylocalchanges.txt

hg revert -a

# Do your merge here, once you are done, import back your local mods

hg import --no-commit mylocalchanges.txt

如果你知道更新不会干扰我们的工作,你也可以强制拉/更新(
hg pull-f
)。

如果你只是为了向网络公开代码,以便你可以拉并继续在家工作,我不知道你的同事应该推动相同的回购。您可以考虑使用开发人员库:一个用于个人用途的回购(无论是通过权限,还是通过执行/礼貌)。 某些程序(如)提供此功能,但即使您只是将回购存储在网络/共享驱动器上,也应该能够在那里创建个人回购

如果不是这样(即:您没有服务器权限),您也可以考虑使用命名分支。在这种情况下,您只需提交到命名的分支,并将该分支推送到服务器。大概你的同事会把你命名的分支放在一边,没有什么新的东西可以拉和合并。就“分支混乱”而言,是的,它们在回购的整个生命周期内都存在,但在合并之前关闭命名分支将使它们从您的视线中消失,并解决一些问题

> hg update <branch name>
> hg commit --close-branch -m 'closing branch <branch name>'
>hg更新
>hg commit--关闭分支-m'关闭分支'

在最后一天,我不认为分支杂乱是一个主要的问题,除非你有一个庞大的团队,或者(b)没有关闭你的分支。

< P> <强>一个同时开发多个特征/错误修正的工作流:>/P> 一种可能是根据您开发的功能克隆尽可能多的存储库。但这可能在磁盘空间、时间上很昂贵,而且容易混淆。另一种可能是在同一个本地存储库(我们称之为Main)上处理不同的主题,但只使用第二个主题来选择性地将一个或多个所需的功能提交到中央存储库

本文对此进行了很好的解释和详细说明:

如果遇到以下错误消息:

  • “中止:推送创建新的远程磁头!”(可能有多个磁头)
  • “中止:跨分支(使用'hg merge'或'hg update-C')”(工作目录位于与拉入更改不同的分支中),或
  • “中止:未提交的更改”(由于本地修改而无法合并)
然后,上面的文章解释了为什么会发生这一切,并提出了一个工作流来避免这些问题。注意:还可以使用MQUES补丁机制来推动您的更改(请参阅本文的注释1)


希望能有所帮助。

如果您不想使用shelve,只需3个命令即可:

$ hg shelve
hg diff > mylocalchanges.txt

hg revert -a

# Do your merge here, once you are done, import back your local mods

hg import --no-commit mylocalchanges.txt

谢谢,我一定要去看看!埃兰德霍尔姆-谢谢。阁楼延伸部分确实很有用,但它只在电车出发前不到2分钟的第三步帮助您解决问题。我也会考虑其他解决方案,比如拥有自己的远程克隆存储库(没有冲突保证)(也称为“窑中的分支库”)或另一种在2个位置之间共享工作的机制,例如Dropbox。最后一种方法是使用一个真正命名的分支,将其推送到远程回购,但是我真的不喜欢这种选择,因为命名的分支永远都是历史的一部分。$hg status-n | tar-cf--t->~/Dropbox/wip.tar#我想我只需要使用这一行,直到我需要更精细的东西时才使用它(使空提交:),然后
hg pull-u
这是一种非常简单直观的方法。我发现我还需要像这样指定一个修订号,
hg revert-rREVNO-a
这很聪明,可能很好用;但为什么这比hg shelve好呢?(请注意,Ortoise shelve并不比hg shelve更好,但它与hg shelve不一样)研究如何对多个本地存储库使用
hg share
而不是
clone
。一般来说效果很好。