gpt4 book ai didi

git-subtree pull 并发症

转载 作者:IT王子 更新时间:2023-10-29 01:26:07 37 4
gpt4 key购买 nike

我们一直在努力获取git-subtree在一个项目上工作(使用 git 版本 1.7.9.4)并且遇到了一些复杂情况。几个月前,其他人使用此命令添加了子树:

git subtree add --prefix=foo git@example.com:foo.git master

现在对 foo 进行了实质性更改,我们希望 merge 这些更改,最好是将它们压缩。自导入以来,没有任何文件被修改。

我已经尝试了三件事来尝试 merge 更改。

首先:

git subtree pull --squash -P foo git@example.com:foo.git master

抛出异常:Can't squash-merge: 'foo' was never added.

第二个:

git subtree pull -P foo git@example.com:foo.git master

这(有点)有效,但存在 pull 入所有提交的问题,并且与已修改的文件有冲突。

最后,我尝试了这个:

git pull --squash -s subtree git@example.com:foo.git  master

这给了我想要的结果,输出 Automatic merge wonder well;在按要求提交之前停止,所有文件显示为已修改(具有正确的内容)。

理想情况下,我想继续使用第一个 git-subtree 版本并获得接近上一个版本的输出。如果我们必须始终如一地使用最后一个版本,我们会的,但我有点困惑为什么最后一个不产生 merge 冲突而中间一个会产生。

感谢任何帮助。

最佳答案

我有同样的问题,在我的例子中,这似乎是由于初始子树提交被 merge 压缩到主分支。

查看子树源代码,我发现了这个:https://github.com/git/git/blob/master/contrib/subtree/git-subtree.sh#L224

看起来 subtree 为 git-subtree-dir: foo grep 你的 git 日志,但没有找到合适的提交。试试 git log --grep="git-subtree-dir: foo/*\$",如果那个提交有什么奇怪的地方,比如它是一个 merge 提交,那可能就是问题所在.

除了烦人的 merge 冲突之外,只 pull 而不压扁对我有用。我在一个临时分支中执行此操作,然后将其 git merge --squash 编辑到另一个分支中以避免出现更困惑的历史记录。当然,它也可以重新设置基数。

关于git-subtree pull 并发症,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9777564/

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