gpt4 book ai didi

mercurial - 如何在 Mercurial 中通过克隆修剪分支?

转载 作者:行者123 更新时间:2023-12-02 11:30:41 26 4
gpt4 key购买 nike

假设我有一个善变的项目,我这样做:

hg branch whatever
touch newfile
hg add newfile
hg commit -m "added newfile" --close-branch
hg up -C default
hg merge whatever
hg push
abort: push creates new remote branch 'whatever'!
(did you forget to merge? use push -f to force)

如何删除分支,以便 hg Branches -c 不会在那里显示它?令人沮丧的是,这不允许我推送到 bitbucket。我读了Documentation ,但前两点我可能没有正确遵循(因为我不断收到错误,即使我 merge 了)。第三点,关于通过clone删除,我不明白该怎么做,因为我总是在我的存储库中得到功能分支。

最佳答案

如果 what 是一个良好的合法分支(例如功能分支),并且您希望它位于 Bitbucket 存储库中,则应该执行 hg Push --new-branch 。如果没有这个开关,Mercurial 会想,嘿,也许你根本不想推送这个分支,也许它是私有(private)的,你就会犯错误。

如果您不希望 whatever 成为真正的命名分支,则可以使用 bookmarks而不是命名分支。与命名分支不同,书签可以稍后删除。

编辑:如果你想要实现的是在分支中完成开发后使历史记录呈线性,那么你要做的就是rebase。有两种情况:

Bitbucket 存储库中没有新的变更集。在这种情况下,您只需删除书签并推送,因为没有要 merge/ rebase 的头。请记住,对于书签,AD 位于分支 default 中。

1 -- 2 -- 3 -- A -- B -- C -- D
^ ^
your work 'whatever' bookmark

Bitbucket 存储库中的新变更集。您拉取您的工作,然后在 Bitbucket 存储库提示之上重新调整您的工作,然后删除书签并推送。

               new changeset you pulled
v
1 -- 2 -- 3 -- 4 -- 5
\
A -- B -- C -- D
^ ^
your work 'whatever' bookmark

您执行hg rebase -Bwhat以使历史线性化:

               new changeset you pulled
v
1 -- 2 -- 3 -- 4 -- 5 -- A -- B -- C -- D
^ ^
your work 'whatever' bookmark

然后删除书签,然后推送。

rebase 会创建新的变更集,因此请务必不要对已推送的变更集进行 rebase 。

关于mercurial - 如何在 Mercurial 中通过克隆修剪分支?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6865076/

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