簡體   English   中英

將子目錄放入獨立存儲庫,然后合並回主存儲庫

[英]Sub-directory into independent repository and later merge back into main repository

我想從現有git存儲庫的子目錄中創建獨立的存儲庫,然后能夠將其合並回主存儲庫。 基本上我想將單片git存儲庫的一個子目錄分開以進行特定的工作,並能夠將提交合並回整體倉庫。

我嘗試過的是拆分子樹:

% git subtree split -P project_a/directory_a -b directory_a_branch

然后我可以將directory_a_branch克隆到單獨的存儲庫中並開始處理它:

% git clone -b directory_a_branch --single-branch file:///path/to/main_repo

后來我可以將更改推回到主存儲庫(在directory_a_branch下) - 一切正常,現在就通過本書。

問題始於我合並directory_a_branch策略,由於我顯然無法完全理解我正在做什么,因此失敗了。

我從Pro Git書中讀到了“Subtree Merging”: https//git-scm.com/book/en/v1/Git-Tools-Subtree-Merging並嘗試:

% git read-tree --prefix=project_a/directory_a -u directory_a_branch
error: Entry 'project_a/directory_a/README' overlaps with 'project_a/directory_a/README'.  Cannot bind.

這里討論類似的問題: git:將一個子樹從一個分支合並到另一個分支 ,但對我來說缺乏足夠的答案。

創建子樹分支不是我的意圖,這個問題可以通過其他方式解決。 也許與子模塊?

我的意圖是一個存儲庫就像是另一個存儲庫的子存儲庫,並且將工作重新合並到主存儲庫將盡可能簡單,因為兩個存儲庫共享相同的文件。

有沒有可能用Git解決這個任務而沒有丑陋的黑客攻擊?

解決此問題的一種方法(可能填寫特定用例)在本文中描述: https//lostechies.com/johnteague/2014/04/04/using-git-subtrees-to-split-a-repository/

基本上你從master(&commit)中刪除project_a/directory_a然后從(遠程)分支subtree add --prefix ,如下所示:

git subtree add --prefix=project_a/directory_a remote branch

但這不是100%,因為有更好的方法來解決這個問題。

單線解決了這個問題:

 git merge -s subtree directory_a_branch master

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM