我有两个名为X和Y的分支.X先前已创建,y是最新的。现在我在分支'Y',我修改了一些文件。我需要提交我修改过的文件,我需要将更改提交到'X'分支而不是'Y'分支。我怎么能用Mercury Hg或Tortoise Hg做到这一点? (如何切换到'x'分支并提交更改?)
答案 0 :(得分:0)
我使用Shelving进行此类操作:https://tortoisehg.bitbucket.io/manual/2.9/shelve.html
当您在'Y'分支上时,将所有更改都放到货架上。然后切换到“X”分支并从您的架子恢复更改。
答案 1 :(得分:0)
你可以
结果看起来你把它提交给了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
来解决您最喜欢的合并工具(或您配置的任何工具)中的冲突。希望这会有所帮助。