如何切换分支并使用Tortoisegit进行提交?

时间:2013-10-18 04:56:56

标签: mercurial tortoisehg

我有两个名为X和Y的分支.X先前已创建,y是最新的。现在我在分支'Y',我修改了一些文件。我需要提交我修改过的文件,我需要将更改提交到'X'分支而不是'Y'分支。我怎么能用Mercury Hg或Tortoise Hg做到这一点? (如何切换到'x'分支并提交更改?)

3 个答案:

答案 0 :(得分:0)

我使用Shelving进行此类操作:https://tortoisehg.bitbucket.io/manual/2.9/shelve.html

当您在'Y'分支上时,将所有更改都放到货架上。然后切换到“X”分支并从您的架子恢复更改。

答案 1 :(得分:0)

你可以

  • 将其提交给Y分支
  • 然后移植/坟墓到X分支
  • 然后从Y分支中删除变更集

结果看起来你把它提交给了X而不是Y

答案 2 :(得分:0)

如果您尚未提交更改,那么您应该能够执行以下操作:

hg update X
hg commit

除非您在文件中的相同位置更改了某些相同的文件,否则这应该足够了。如果有,则hg update X命令应该失败。此时你有几个选择。

您可以使用Mercurial Queues(mq)。

您可以将当前更改放入修补程序队列:

hg qnew stufftomove -e

您将看到用于创建提交消息的任何编辑器。继续并在最终提交时用您想要的任何内容填写您的提交消息。如果不使用-e,则只创建没有提交消息的补丁队列。稍后,如果需要,您可以使用hg qrefresh -e发送提交消息。

创建补丁队列后,使用以下命令将其弹出:

hg qpop

现在转到X分支:

hg update X

现在按下补丁队列。这将应用补丁文件:

hg qpush

这可以干净利落,或者如果你确实有合并冲突,你会收到一条消息,说明已经创建了.rej文件。这些显示了无法自动应用的更改部分。

如果您有.rej文件,请手动应用不起作用的部分然后运行     hg qrefresh

这将使用新更改更新补丁文件。

如果所有内容都符合您的要求,您可以使用

将修补程序队列转换为实际提交
hg qfinish stufftomove

您的文件更改现在应该在您希望它们所在的分支上提交。

或者,如果您已经在错误的分支上提交了更改,并且没有将更改推送到远程存储库(或将其拉出),则可以执行以下操作:

hg qimport -r <revision to import>

此时,请从hg qpop开始继续上述说明。

如果您可以更具体地了解文件和分支的状态,我可以更具体地帮助您。无论如何,我希望这会有所帮助。

旁注:如果您在上述步骤中遇到合并冲突,并且不喜欢处理.rej文件,则可以使用hg rebase来解决您最喜欢的合并工具(或您配置的任何工具)中的冲突。希望这会有所帮助。