gpt4 book ai didi

使用中央存储库时,mercurial 协作会导致多次提交相同的更改

转载 作者:行者123 更新时间:2023-12-01 11:57:15 25 4
gpt4 key购买 nike

我一直在使用带有中央存储库的 mercurial。当我们中的两个或更多人致力于我们在本地提交的更改时。在某个时候,我们将这些更改推送回中央存储库。

当我拉动时,问题就来了。通常会有其他开发人员修改和推送的文件,这些文件会通过拉取进入我的存储库。然后我需要 merge ,这显示了我的本地存储库和提交的文件之间的区别。

困扰我的是我必须 merge 和提交。这被推回到中央服务器,它似乎已经提交了两次相同的更改,一次是我作为 merge ,一次是来自其他开发人员的变更集。

在 mercurial 中有没有什么方法可以更新我的存储库并更新我没有接触过的文件,而不是记录两次完全相同的更改,一次来自原始开发人员,一次来 self 的 merge ?

这个问题似乎提出了同样的观点,但没有提供我的问题的答案: Why is mercurial dumb when merging? How can I make pulling/merging changes simpler?

最佳答案

Mercurial 在变更集和修订方面工作。

变更集是进行修订时所做变更的快照。

如果你成功地只更新了被更改的文件,当你拉取时,你的工作文件夹中不会有一个实际的修订,你会有一个 SCSS 修订,只有你和你的机器知道如何那是。在不同时间拉动的其他人会得到不同的 SCSS 修订版,他们不会排队。

所以不,Mercurial 设计为完全按照您所说的那样工作,除了它没有真正显示发生两次的变化,如果它看起来这样做,一定是您做错了什么。

换句话说,如果我更改了某些内容并提交,然后我拉下您的更改,进行 merge ,然后提交, merge 提交将只包含我为解决 merge 而必须执行的任何更改。如果 merge 是自动的,没有需要解决的冲突,看起来您只是在提交一个空的变更集,有两个父变更集。

现在,有很多方法可以减轻所有分支,例如,您可以使用 rebase。

会发生以下情况:

central: 1---2---3---4

local: 1---2---3---4

你改变了什么

central: 1---2---3---4

local: 1---2---3---4---5

其他人改变了一些东西,然后推送:

central: 1---2---3---4---5'--6'

local: 1---2---3---4---5

(我在 5 之后使用 ' 来表明虽然它是该存储库中的修订号 5,但它与其他存储库中的修订号 5 不同。)

然后当你拉的时候,它看起来像这样:

central: 1---2---3---4---5'--6'  <-- corresponds to these <--+
|
local: 1---2---3---4---5 |
\ |
6'---7' <-- note that these gets renumbered

然后你将 5 rebase 到 7' 之上,你得到这个:

local:   1---2---3---4---6'--7'--5

如果需要,如果您进行了冲突更改,则在 rebase 时会发生 merge 。 rebase 后,您可以推送。它基本上使您的修订历史看起来像是轮流工作。

关于使用中央存储库时,mercurial 协作会导致多次提交相同的更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5793828/

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