gpt4 book ai didi

mercurial - 为什么 hg commit 创建一个新头?

转载 作者:行者123 更新时间:2023-12-02 03:10:37 26 4
gpt4 key购买 nike

我已经将一堆文件添加到我的 Mercurial 存储库中,当我现在执行 hg commit -m "Bunch of new files" 时,我收到一条消息:Created new head。我不明白为什么会这样,除非我的存储库以某种方式损坏了。这是一个非常简单的存储库,没有分支,只是默认的。我不想创建一个新头。有没有办法强制提交而不创建新头? (顺便说一句,这是新行为 - 我已经使用该存储库工作了几年,将更改推送到 Bitbucket)。

最佳答案

可能发生的事情是这样的......

您的起点是一个包含一些变更集的存储库:

a-b-c-*

(* 是您的本地工作文件夹 - 不是提交)

后来,您执行了 hg pull ,这使您的存储库看起来像这样:

a-b-c-d-e
\
*

因为其他人同时犯了 de

然后当你hg commit时,你会得到这个:

a-b-c-d-e
\
f-*

f 是你的新头。您还可以将 f 视为匿名分支的尖端。

这就是 Mercurial 的工作原理(当您需要时,它实际上是一个非常有用的功能)。

此时,您可以 hg merge ef,产生:

a-b-c-d-e
\ \
f-----g-*

或者你可以hg rebase fe,得到:

a-b-c-d-e-f-*

(你不能真正以另一种方式 rebase - 将de放到f上,因为它们是“公开的”,已经被其他人插入了。)

mergerebase 都很好用,但有点主观,哪个“更好”。 merge 更紧密地保留了所发生事件的实际历史,但也使历史更难追踪。

关于mercurial - 为什么 hg commit 创建一个新头?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57691746/

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