gpt4 book ai didi

Mercurial merge 分支? (中止 : push creates new remote branches)

转载 作者:行者123 更新时间:2023-12-03 23:49:42 24 4
gpt4 key购买 nike

我是 Mercurial 的新手,我犯了在主存储库更新之前在不同系统上进行不同更改的错误。 (我知道这是 Mercurial 的目的,但我的大脑正在努力解决这个问题。)

现在在我的主要开发服务器上,一切都是最新的并已提交。不过……

$ hg push
abort: push creates new remote branches: 4f2672f039d7!
(use 'hg push --new-branch' to create new remote branches)

我真的不想要一个新的分支。我只想合并所有更改。
$ hg heads
changeset: 459:ff5f94e44aba
branch: 4f2672f039d7
tag: tip
parent: 458:e63d02baf4cf
parent: 455:267abda62069
user: mike@...
date: Tue Sep 13 14:25:16 2011 -0400
summary: Images from prof

changeset: 455:267abda62069
parent: 453:a74757e26357
user: mike@localhost.localdomain
date: Tue Sep 13 09:08:12 2011 -0400
summary: images for FLC

指出我正确的方向?

编辑:(添加细节)

当我尝试合并时,我得到以下结果:
$ hg merge
abort: branch '4f2672f039d7' has one head - please merge with an explicit rev
(run 'hg heads' to see all heads)

我试过 hg merge ff5f94e44aba , 以及上面列出的所有 revs,并且每个都返回相同的结果:
$ hg merge 267abda62069
abort: merging with a working directory ancestor has no effect

最佳答案

看起来您不小心创建了一个名称愚蠢的分支。您最有可能想要做的是使用更有意义的分支名称重新应用您的更改。没有完全自动的方法可以做到这一点,但是您可以将每个变更集提取为一个补丁,恢复到您搞砸的地方并在正确的分支上重新应用这些更改。

基本上你需要做的是查看变更日志;可能通过运行 hg out查看中央存储库中缺少什么。记下您要保留的每个转速。

下一次更新到最后一个好的修订版。确保您位于您希望提交所在的分支上。

现在,您将应用所做的每项更改并提交每项更改。您可以自动执行此过程,如下所示:

BADREVS="123 124 125 126"

recommit() { hg di -c $1 | patch -p1; hg ci -m "$(hg log -r $1 --template '{desc}')";}
for rev in $BADREVS; do
recommit $rev
done

现在您已经在本地存储库中进行了两次更改;一次是在奇怪的分支上提交,然后是在正确的分支上。您可以使用 hg push -b GOODBRANCH 将这些更改推送到中央存储库这样只有对正确分支的更改才会上升;或者,您可以安装 strip extension从本地存储库中删除您不想要的更改,然后您可以正常推送。

通过它的声音;在推送之前,您仍然需要处理对中央存储库所做的更改,因为您从另一个存储库推送了更改。您可能希望在清理本地存储库中的更改历史记录后进行此合并。

关于Mercurial merge 分支? (中止 : push creates new remote branches),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7448405/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com