如何保持未提交的变化在一个地方反复无常的储存库,同时还推/拉?

StackOverflow https://stackoverflow.com/questions/6392832

  •  29-10-2019
  •  | 
  •  

如果我工作的一些文件,我不想提,我只是拯救他们。然后,我有其他文件,我要推向服务器,但是如果别人改变了储存库,并且我们拉下来的,它要求我向合并或变基.. 但这些选项将会使我失去我的地方的变化,我没有致力.

什么是其他人做得到围绕这个吗?我找到文件编制搁置的扩展难以得到我的头左右。

注:我使用水银蚀,以推动和拉动的文件/服务器。

任何解释这将不胜感激!谢谢!


例如:

我的工作我的网站在善变的食。我有一个新的文件夹和新的文件,我不想承诺的服务器。我还修改了一些现有的文件,我不想作这些改动只是还没有。

那么在我的网站的突破并且我需要修复它,它将不让我来修复它没有衍合或合并的最新尖端的回购,这将使我失去我所有的未提交的变化。

我应该怎么做我的新文件夹和文件,我已经编辑如果我不想失去它吗?重新克隆似乎繁琐。将文件复制到一个新文件似乎很繁琐。我敢肯定,搁置或MQ会做我想做的,我只是不知道如何去做。

有帮助吗?

解决方案

我确定有人会帮助您找到一个错误的解决方法,但是最好的方法是更改您的目标-只需提交即可。尚未提交的代码尚未编写。如果您确实不能忍受历史记录中的频繁提交,请在队列存储库中使用Mercurial Queues并进行提交。然后,您可以弹出变更集,进行推/拉/合并,然后再将其推回去,所有有价值的工作都将提交到补丁队列中。

其他提示

参考你的例的情况,这里是我会怎么做(以下Ry4an的战略只是提交的事你目前的工作,但不希望公布已经):

你应该开始工作,在一个仓库的这样一:

$ hg status -A
C f1
C f2
$ hg glog
@  changeset:   1:7f3c6c86a92f
|  tag:         tip
|  summary:     add f2
|
o  changeset:   0:03ca1e6d5b86
   summary:     initial

这是有文件2和2的提交/变更集。你做一些工作,让我们说,添加一个新的特征,然后你的工作副本可能是这样的:

$ hg status
M f2
? f3
? f4

有2个新的和1修改的文件。现在你必须解决的一个错误,你还需要任何新的变化在一个偏远的储存库。照你目前的工作通过承诺,它并拉远的改变(在这为你做的没关系,拉默认情况下不会触摸的状态,你的工作副本):

$ hg commit -A -m "snapshot feature work"
$ hg pull

这可能导致在一个历史是这样的:

o  changeset:   3:2284ba62de07            <-- just pulled in
|  tag:         tip
|  parent:      1:7f3c6c86a92f
|  summary:     edit f1
|
| @  changeset:   2:4a19d371a04f          <-- your interrupted work
|/   summary:     snapshot feature work
|
o  changeset:   1:7f3c6c86a92f
|  summary:     add f2
|
o  changeset:   0:03ca1e6d5b86
   summary:     initial

现在你可以更新至/签修订版3,并开始修复的错误:

$ hg update 3
.. fix the bug ..
$ hg commit -m "fix a bug"
$ hg glog --limit 3
@  changeset:   4:5d3d947fb4af
|  tag:         tip
|  summary:     fix a bug
|
o  changeset:   3:2284ba62de07
|  parent:      1:7f3c6c86a92f
|  summary:     edit f1
|
| o  changeset:   2:4a19d371a04f
|/   summary:     snapshot feature work
:

看起来很好的,让我们把你的解决,即让它活,而不要发布中间的工作:

$ hg push -r 4

这推动所有变化,导致4修订版,你的修正,但没有任何其他分支机构在当地的存储库。你也可以使用 -r ., ,这是指父母的修订工作复制,即修订,你只是承诺。

最后,你可以回到你的特征的工作,并继续你的工作:

$ hg update 2
.. work, commit, work, commit ..
.. finally merge with the other branch, e.g. revision 4

这些步骤是在命令行,但我认为这不是难以适应的一般概念相应的点击在日食善变的插件。

一些额外的注意事项:

  • 你可能想要 书签 你的快照提交,所以你不需要工作与修订Id或数字。
  • 如果你想要出版你的特征的工作在一个单一承诺之后,使用 崩溃 扩展一旦你完成。
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top