gpt4 book ai didi

Git 子树 pull 导致 merge 冲突

转载 作者:行者123 更新时间:2023-12-05 06:45:45 28 4
gpt4 key购买 nike

目前我有 3 个存储库,分别命名为 A、B 和 C。A 和 B 都有一个名为 c 的文件夹,它是存储库 C 的子树。现在,当我向 A 的 c 添加一个新文件时,执行 git add ,提交和 git 子树推送,它被推送到 C。当我 pull 入 B 时,它最终出现在 B 的 c 文件夹中,因此它按预期工作。但是,当我在 B 的 c 中编辑新文件并执行 git commit 和 git subtree push,然后在 A 中执行 git subtree pull 时,我遇到了 merge 冲突。

如何防止这种冲突?

最佳答案

我很好奇(也许是怀疑)您的这部分描述是否相关。你说“目前我有 3 个存储库,分别命名为 A、B 和 C。A 和 B 都有一个名为 c 的文件夹它是存储库 C 的子树。”

当我使用子树时,共享子树由一个完全专用于该共享子树内容的裸存储库托管。所以,如果有人想拥有一个共享文件夹 f,那么就会有一个裸存储库 F,其中包含将进入共享文件夹 f 的所有文件,仅此而已。 F 存储库没有其他内容。它不会将文件夹 f 作为 F 存储库的一部分。 F 存储库是空的(没有工作树内容)。

然后,如果我有三个项目 A、B 和 C,它们都想使用文件夹 f,则该文件夹 f 作为子树包含在 A、B 和 C 中,所有三个项目都将从和推送到裸存储库 F。F 是中心,其他(A、B 和 C)是分支。每个辐条与集线器交换,但不直接相互交换。例如,A 和 B 不会向 C 推或 pull 。

根据您的描述,这是我对可能导致您出现问题的原因的最佳猜测。尝试确保子树的中央主机存储库只是一个裸存储库,不用于保存任何其他内容或任何工作树内容。

附注虽然我确实有一个本地裸存储库来托管共享子树(即使没有连接到互联网也可以工作——分布式版本控制的基本好处),但也可以定期将更新的本地裸存储库中的更改推送到一个用于安全保管的远程裸存储库。但是,在此配置中,我不建议尝试让多个开发人员对同一共享子树进行独立更改。如果您有多个开发人员在处理共享子树代码,那么只需在您用于共享远程存储库的任何服务上使用一个共享远程裸存储库。

额外提示: 如果一个人正在使用本地裸存储库(因为使用子树),这可能不太理想,因为(到目前为止) ) 对在您的计算机上使用本地裸存储库的支持不佳。在带有 Git for Windows 的 Windows 环境中,如果我 cd 到裸存储库的顶层目录,则 gitk 命令将调出一个可用的 gui 工具,让人们可以检查裸存储库。

关于Git 子树 pull 导致 merge 冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21783713/

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