我試圖使用git的子樹合併stategy我想要合併的子目錄嵌套相當深 - 目前四個級別深。Git:子樹合併到深嵌套子目錄中?
我按照指示here將模塊存儲庫添加爲遠程,運行git讀取樹以將遠程代碼獲取到本地回購的子目錄中,並提交這些更改。
當我嘗試從遠程將更改合併到主項目的主分支中時,出現問題。上面的第5步表明使用-s子樹開關的git pull。這適用於我當我的子目錄是一個,兩個或三個深層次,但不是四個正確的。
這是將子目錄合併到2個子級的結果。您可以看到sites/all /中的README文件已經正確更新。在我的遠程回購中,自述文件位於根目錄中。
$ git pull -s subtree REMOTE_REPO master
remote: Counting objects: 5, done.
remote: Compressing objects: 100% (3/3), done.
remote: Total 3 (delta 2), reused 0 (delta 0)
Unpacking objects: 100% (3/3), done.
From /path/to/my/REMOTE_REPO
* branch master -> FETCH_HEAD
Merge made by subtree.
sites/all/README | 2 ++
1 files changed, 2 insertions(+), 0 deletions(-)
這裏的子目錄是3級深:sites/all/modules /。這也可以正常工作,拉動更新並更新文件。
$ git pull -s subtree REMOTE_REPO master
remote: Counting objects: 5, done.
remote: Compressing objects: 100% (3/3), done.
remote: Total 3 (delta 2), reused 0 (delta 0)
Unpacking objects: 100% (3/3), done.
From /path/to/my/REMOTE_REPO
* branch master -> FETCH_HEAD
Merge made by subtree.
sites/all/modules/README | 2 ++
1 files changed, 2 insertions(+), 0 deletions(-)
但是現在我的代碼位於4級深的子目錄中:sites/all/modules/my_module /。 Git似乎從REMOTE_REPO中提取更改,但它不更新文件,而是告訴我它已經是最新的。
$ git pull -s subtree REMOTE_REPO master
remote: Counting objects: 5, done.
remote: Compressing objects: 100% (3/3), done.
remote: Total 3 (delta 2), reused 0 (delta 0)
Unpacking objects: 100% (3/3), done.
From /path/to/my/REMOTE_REPO
* branch master -> FETCH_HEAD
Already up-to-date!
Merge made by subtree.
如果我馬上再運行它,它不會拉動更新或更新文件。
$ git pull -s subtree REMOTE_REPO master
From /path/to/my/REMOTE_REPO
* branch master -> FETCH_HEAD
Already up-to-date.
查看git的日誌在這一點上會告訴我從遠程回購和合並在我結賬的變化,但文件尚未更新。
這是一個錯誤,還是我做錯了什麼?
更新:克里斯·約翰森提供了以下選項,它拋出一個錯誤:
$ git pull -X subtree=sites/all/modules/my_module/ REMOTE_REPO master
remote: Counting objects: 5, done.
remote: Compressing objects: 100% (3/3), done.
remote: Total 3 (delta 2), reused 0 (delta 0)
Unpacking objects: 100% (3/3), done.
From /Users/jeff/work/checkouts/compass_suite
* branch master -> FETCH_HEAD
fatal: entry not found in tree 173d4f16af4d2d61ae5c4b3446c392e8b49cc57d
謝謝你的回答,克里斯。我剛剛嘗試了一個錯誤。由於我無法在註釋中發佈代碼,因此我已更新我的問題以顯示命令的輸出。 – Jeff 2011-05-06 17:59:20
我應該多加註意。結果是斜線導致了錯誤。我使用subtree = sites/all/modules/my_module /而不是子樹= sites/all/modules/my_module。沒有尾隨斜線,它的工作原理!再次感謝。 – Jeff 2011-05-06 19:49:41
感謝您的回答。我用它將一個大的git repos分割成多個較小的git repos。 – 2012-09-13 01:00:43