我的同事在错误的分支上的存储库中提交了两次。
什么是最有效的方法来进行这两次提交,将其删除,然后在正确的分支下正确地提交它们? (更改尚未推送)
理想情况下,我们希望从TortoiseHG中执行此操作,但当然,如果它是最佳选择,我们将使用命令行。
最佳答案
Mercurial Queues(mq)扩展可以提供帮助。
给定一个类似以下的更改历史记录:
@ changeset: 3:9dc681b56325
| summary: file4
|
o changeset: 2:6675b3f86aa7
| summary: file3
|
| o changeset: 1:4a3209ed5b2f
|/ summary: file2
|
o changeset: 0:6ab45ac3bd6d
summary: file1
以下命令将文件“file4”更改集移动到另一个分支(“file2”头):
hg qimport -r 3 // convert revision 3 to a patch
hg qpop // remove it
hg update 1 // switch to the other branch head
hg qpush // push the change back
hg qfin -a // convert the applied patch back to a changeset
导致:
@ changeset: 3:3faa754edb0b
| summary: file4
|
| o changeset: 2:6675b3f86aa7
| | summary: file3
| |
o | changeset: 1:4a3209ed5b2f
|/ summary: file2
|
o changeset: 0:6ab45ac3bd6d
summary: file1
请注意,由于变更集现在具有不同的父级,因此修订版3的变更集哈希已更改。更高版本的TortoiseHg也支持MQ扩展。