git subree pull -P无论<repo> <ref>总是合并冲突</ref> </repo>

时间:2014-03-27 11:56:20

标签: git merge git-subtree

问题:即使我没有更改,每次尝试进入子树时,我都会遇到合并冲突。

我在做什么

subree-repo

# Make some changes

$ git commit -am 'Changes made'

$ git push origin master

main-repo

$ git subtree add --prefix public/common {{subtree-repo}} master --squash

# Make some changes

$ git commit -am 'Changes made'

$ git subtree push --prefix public/common {{subtree-repo}} master

subree-repo

$ git pull origin master

# Make some changes

$ git commit -am 'Changes made'

$ git push origin master

main-repo

$ git subtree pull --prefix public/common {{subtree-repo}} master --squash

这就是事情爆发的地方。拉给了我:

remote: Counting objects: 5, done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 3 (delta 1), reused 0 (delta 0)
Unpacking objects: 100% (3/3), done.
From {{subtree-repo}}
 * branch            master     -> FETCH_HEAD
   a53e6fc..c078461  master     -> {{subtree-repo}}/master
Auto-merging public/common/README.md
CONFLICT (content): Merge conflict in public/common/README.md
Automatic merge failed; fix conflicts and then commit the result.

那么,为什么我没有做出任何更改时会出现合并冲突?

我正在努力实现的目标:我有一个网络项目和一个我在Cordova上构建的移动项目。因为他们都使用JavaScript,所以我想要在两者之间共享几个组件和模型。我想将这些常见的东西放在他们两个之间的共享文件夹中,这样我就不必复制粘贴了。我研究了子模块和子树的优点/缺点,并决定了子树。这是一个单人项目,但我想以正确的方式做事,以便可以扩展。

注意:如果您有更好的方法来完成我想要做的事情,那就太棒了: - )

1 个答案:

答案 0 :(得分:2)

不确定导致问题的是什么,但我已经为我想要完成的事情确定了更好的解决方案:

bower install git@bitbucket.org:username/my_repo.git --save

所以我只是使用凉亭在回购之间分享东西。我没有意识到你可以使用git存储库url作为bower组件。我说的很甜蜜。不幸的是,这并不允许我从我使用的回购中进行上游更改,但至少我有一个非常简单的方法来执行此操作:)


<强>更新

posted this method on Google+Rob Becker提到您可以通过使用bower符号链接使其更简单:

尝试添加&#34;凉亭链接&#34;减少所有复制。 您可以将您的共享代码放在单独的存储库中,并将其设置为您已有的bower组件。然后做 $ bower link 在bs-js-common

这会设置链接。然后在您的主项目中,您对bs-js-common的bower依赖只做: $ bower link bs-js-common

然后,您将拥有从主项目bower_components / bs-js-common文件夹到实际项目存储库所在位置的文件系统链接。这使您可以在两个地方看到实时更改。