问题:即使我没有更改,每次尝试进入子树时,我都会遇到合并冲突。
我在做什么:
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,所以我想要在两者之间共享几个组件和模型。我想将这些常见的东西放在他们两个之间的共享文件夹中,这样我就不必复制粘贴了。我研究了子模块和子树的优点/缺点,并决定了子树。这是一个单人项目,但我想以正确的方式做事,以便可以扩展。
注意:如果您有更好的方法来完成我想要做的事情,那就太棒了: - )
答案 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文件夹到实际项目存储库所在位置的文件系统链接。这使您可以在两个地方看到实时更改。