2014-03-27 53 views
4

問題:每當我試圖拉入我的子樹,即使沒有更改時,我也會遇到合併衝突。git subtree pull -P whatever <repo><ref>始終合併衝突

我在做什麼

樹回購

# Make some changes 

$ git commit -am 'Changes made' 

$ git push origin master 

主回購

$ 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 

樹回購

$ git pull origin master 

# Make some changes 

$ git commit -am 'Changes made' 

$ git push origin master 

主回購

$ 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. 

那麼,爲什麼我沒有做出任何改變時得到合併衝突?

我想要完成的事情:我有一個web項目和一個移動項目,我在科爾多瓦建設。因爲它們都使用JavaScript,所以我想在兩者之間分享幾個組件和模型。我想把這些常見的東西放在它們兩個之間的共享文件夾中,所以我不必複製粘貼。我研究了子模塊和子樹的優缺點,並決定使用子樹。目前這是一個單人項目,但我想以正確的方式做事,以便可以擴展。

注意:如果你有更好的方法的建議來完成我想要做的,這將是真棒:-)

回答

2

不知道是什麼導致了問題,但我已經決定一個更好的解決方案,我試圖完成:

bower install [email protected]:username/my_repo.git --save 

所以我只是使用鮑爾在回購之間分享的東西。我沒有意識到你可以使用一個git倉庫url來構建一個bower組件。我說得很漂亮。不幸的是,這並不讓我做的我使用回購上游的變化,但至少我有一個超級簡單的方法來做到這一點:)


更新

posted this method on Google+Rob Becker提到可以通過使用涼亭符號鏈接使其更簡單:

嘗試添加「涼亭鏈接」以減少所有複製。 您可以簡單地將您的共享代碼放在單獨的回購站中,並將其設置爲已有的涼亭組件。然後做 $ bower link in bs-js-common

這建立了鏈接。然後,在你的主要項目中,你有一個涼亭依賴BS-JS-共同只是做: $ bower link bs-js-common

,您就可以從你的主項目文件系統鏈接bower_components/BS-JS-共同文件夾到實際的項目回購生活。這可以讓您在兩個地方看到實時更改。

+1

我想看到原始問題的正確答案!在不適用涼亭的另一種用例中彈出同樣的問題。 –

+0

@AlexR,我建議你再問一次。 – kentcdodds