我有兩個項目,ProjectA和ProjectB。他們每個人都有它的git回購。這些項目有許多相同的文件。這些文件位於ProjectA和項目B中名爲「common」的文件夾中。下面是文件的例子:Git子樹。兩個存儲庫中的一個常用文件夾
項目A:
...
cat-folder
dog-folder
common
commonFile1
commonFile2
fish-file.php
squirrel-file.txt
...
項目B:
...
potato-folder
apple-folder
common
commonFile1
commonFile2
tomato-file.xml
pineapple-file.csv
...
我在兩個項目。我可能會對在ProjectA或ProjectB上運行的常見文件進行更改。我希望在ProjectA中做出的常見文件更改也出現在ProjectB(反之亦然)的常見文件中。 因此,我希望兩個項目中的「common」文件夾始終保持最新幷包含相同的文件。
爲此,我使用git subtree。我創建了第三回購「共回購」,把那裏的「共同」文件夾中的所有文件,然後刪除「共同」文件夾從兩個項目。然後,在每一個項目我做這個:
$ cd /path/to/ProjectA # or ProjectB
$ git remote add common-repo https://[email protected]/url/of/common-repo
$ git fetch common-repo
$ git subtree add --prefix=common/ common-repo master --squash # this command adds the "common" folder with my common files to the current project
然後,如果我做的共回購變化和推動他們,我可以easely拉他們到項目A或項目B:
$ cd /path/to/ProjectA # or ProjectB
$ git pull -X subtree=common common-repo master # this pulls changes from common-repo
但是,當我在ProjectA(或Proj)工作的「common」文件夾中更改文件ectB)並嘗試將其推送到common-repo。
$ cd /path/to/ProjectA # or ProjectB
$ git subtree push --prefix=common common-repo master # !!!!
最後的命令推動項目A到共回購的所有文件,包括它的非公共文件!
我怎樣才能推共同回購只有「共同」文件夾的文件? 或者我可能會做一些絕對錯誤的事情?
命令「混帳子樹拉前綴=尋常回購大師」的作品了。但是,在「子樹推動」之後,仍然推動整個項目,而不是唯一的「普通」文件夾。 –
嘗試先做一個'subtree split'來查看正在創建的內容,如果有任何錯誤,它可能有助於排查故障。 'subtree push'只是split分支的簡寫,後面是分支分支的'push'。 – LopSae