我的項目使用了一些第三方庫。我使用http://progit.org/book/ch6-7.html中描述的子樹合併過程。 我想允許其他開發人員做維護庫,並定期合併從圖書館回購更新:使用從多個站點合併Git子樹
$ git checkout rack_branch
$ git pull
有沒有一種方法來發布rack_remote和rack_branch,因此他們將在中央存儲庫的一部分,以便其他開發人員也可以使用它們?
我的項目使用了一些第三方庫。我使用http://progit.org/book/ch6-7.html中描述的子樹合併過程。 我想允許其他開發人員做維護庫,並定期合併從圖書館回購更新:使用從多個站點合併Git子樹
$ git checkout rack_branch
$ git pull
有沒有一種方法來發布rack_remote和rack_branch,因此他們將在中央存儲庫的一部分,以便其他開發人員也可以使用它們?
您應該在項目文檔的某些位置記錄每個子樹的「上游」的前綴,URL和分支。
以下示例顯示此信息通常會記錄在您的子樹合併提交消息中,但這取決於完成合並和/或提取的確切方式。
考慮初始子樹合併使用這些命令創建:
git merge --no-commit sub/master
git read-tree -u --prefix=sub sub/master
git commit
的提交信息將是以下幾點:
Merge remote-tracking branch 'sub/master'
我們可以看到,在遠程被評爲sub
和分支被命名爲master
,但我們沒有看到該URL。您可以在最後一步執行手動提交時將該URL添加到消息中。
之後,你可以使用git pull
納入新的「上游」的變化:
git pull -Xsubtree=sub sub master
默認提交信息將包括倉庫URL和分支名稱:
Merge branch 'master' of server:path/to/repository
在另一方面,直接引用提交對象而不是使用分支名稱(例如15dbbda
而不是sub/master
)的初始合併和後續合併的變體將會阻止記錄分支名稱;如果有人決定從. remotes/sub/master
取代sub master
,則不記錄URL。
您是否考慮過使用submodules來代替?看起來它會適合你的工作流程。
我將修改正在導入的這些庫,但我不一定要發佈這些修改。子模塊是否允許對外部存儲庫進行本地修改?或者他們只是鏈接到外部存儲庫? – wanderingbear 2011-05-30 06:46:50