小编use*_*951的帖子

从中央回购中拉出git-subtree冲突

我有几个依赖于同一个库的项目,为此我想维护一个单独的git存储库,以便在每个项目中使用git-subtree进行管理.例如,在每个项目中,我可以做到:

project1$  git subtree add --prefix=lib1 /path/to/lib1.git master
project2$  git subtree add --prefix=lib1 /path/to/lib1.git master
Run Code Online (Sandbox Code Playgroud)

现在在处理project1的过程中,我对lib1进行了一些更改,比如lib1/file1.c,并将其推回到中央仓库:

project1$  git add lib1/file1.c
project1$  git commit -m "updates to lib1"
project1$  git subtree push --prefix=lib1 /path/to/lib1.git master
Run Code Online (Sandbox Code Playgroud)

到现在为止还挺好.但现在我想更新project2的lib1副本.所以我尝试:

project2$  git subtree pull --prefix=lib1 /path/to/lib1.git master
Auto-merging lib1/file1.c
CONFLICT (content): Merge conflict in lib1/file1.c
Automatic merge failed; fix conflicts and then commit the result.
Run Code Online (Sandbox Code Playgroud)

这是怎么回事?我确定没有对project2下的任何lib1文件进行任何更改,那么为什么会出现冲突呢?

冲突是半空的,就像这个问题中报道的那样.所有东西都在一个系统(OS X)中被拉/推,所以我知道那里的线路结尾没有问题.

当然这是git-subtree的常见用例,并且有一个我看不到的简单答案.请帮忙!

编辑:我发现了一个令人不满意的解决方法:在将更改推送到子树后,我需要重新运行子树拉:

project1$  git subtree push --prefix=lib1 /path/to/lib1.git master
project1$  git subtree pull --prefix=lib1 …
Run Code Online (Sandbox Code Playgroud)

git git-subtree

13
推荐指数
3
解决办法
3237
查看次数

标签 统计

git ×1

git-subtree ×1