你如何处理 Mercurial 中一个关闭分支的传出提交?
How do you deal with an outgoing commit to a closed branch in Mercurial?
我提交了一个分支但没有推送它。与此同时,那个分支关闭了,我对其他分支做了更多的提交。我现在在尝试推送时遇到错误,除非我一次推送一个分支。这个错误是有道理的,因为这是关闭分支的全部意义所在,但是我如何 "throw away" 我的提交?我不要了
您还需要从本地存储库中删除该提交。 Mercurial 有用于此任务的 strip
命令(which is its own extension,但它是默认提供的,只需要激活)。因此,在你的 .hgrc 中,你需要你的 mercurial 配置文件
[extensions]
strip =
mq 扩展提供了相同的功能。启用后,您可以删除不需要的提交 及其所有后代 :
hg strip -rXXX
其中 XXX 是您要删除的变更集。保留意见:小心处理,也许在使用 strip 之前 对存储库进行本地克隆,因为 stripping 是一种历史编辑操作,不容易撤消。
关闭分支本身不应阻止您推送。关闭的分支只是一个以携带 "closed branch" 元信息的提交结束的分支。您可以通过简单地再次提交来重新打开一个分支(此时,最近的提交没有 "closed branch" 元信息,因此该分支被视为再次打开)。关闭分支的唯一目的是使其不会出现在 "hg branches".
中
你没有提到你得到的错误,但我认为它来自其他人做一个关闭分支提交而你在别处提交,所以现在分支有两个头,你不能推送没有 -f
的新头像。在这种情况下,答案总是合并两个头(您的提交和封闭分支头 [1]),然后推送。
[1] 或者,将您的提交变基到已关闭的分支头上。
我提交了一个分支但没有推送它。与此同时,那个分支关闭了,我对其他分支做了更多的提交。我现在在尝试推送时遇到错误,除非我一次推送一个分支。这个错误是有道理的,因为这是关闭分支的全部意义所在,但是我如何 "throw away" 我的提交?我不要了
您还需要从本地存储库中删除该提交。 Mercurial 有用于此任务的 strip
命令(which is its own extension,但它是默认提供的,只需要激活)。因此,在你的 .hgrc 中,你需要你的 mercurial 配置文件
[extensions]
strip =
mq 扩展提供了相同的功能。启用后,您可以删除不需要的提交 及其所有后代 :
hg strip -rXXX
其中 XXX 是您要删除的变更集。保留意见:小心处理,也许在使用 strip 之前 对存储库进行本地克隆,因为 stripping 是一种历史编辑操作,不容易撤消。
关闭分支本身不应阻止您推送。关闭的分支只是一个以携带 "closed branch" 元信息的提交结束的分支。您可以通过简单地再次提交来重新打开一个分支(此时,最近的提交没有 "closed branch" 元信息,因此该分支被视为再次打开)。关闭分支的唯一目的是使其不会出现在 "hg branches".
中你没有提到你得到的错误,但我认为它来自其他人做一个关闭分支提交而你在别处提交,所以现在分支有两个头,你不能推送没有 -f
的新头像。在这种情况下,答案总是合并两个头(您的提交和封闭分支头 [1]),然后推送。
[1] 或者,将您的提交变基到已关闭的分支头上。