'忘记'一个死胡同

the*_*oop 2 mercurial branch

我有一个善变的存储库.这是在转发A.我做了一些改变,承诺(转B),并推动.然而,后来,我意识到我不想做出那些改变.我更新回到rev A,并进行了一些替代更改,以转换C.

C
| -
| B
|/
A
Run Code Online (Sandbox Code Playgroud)

但是,现在我无法推动rev C,因为它抱怨它会创建一个新的远程头(它会).如何使远程mercurial简单地忘记rev B及其中的所有更改,所以我可以推动rev C并从那里继续?

Tim*_*gan 5

编辑历史很难.将变更集推送到公共存储库后,就无法再从历史记录中轻松删除它.

解决您问题的最直接方法是:

  1. hg update <tip of branch you want to forget>
  2. hg commit --close-branch -m "close unwanted branch"
  3. hg update <tip of branch you want to keep>
  4. 推送所有更改.如您所述,您需要使用,--force因为现在存在分支上的多个头.

如果你真的需要修剪分支,那么再次阅读EditingHistory.如果它仍然可行,您可以使用PruningDeadBranches中描述的方法之一.