4
我有一個包含多個存儲庫的目錄,它看起來像這樣:將多個孤兒分支成一路
folder
|- repo1
| |- .git
| |- File1.txt
|- repo2
| |- .git
| |- File2.txt
|- repo3
| |- .git
| |- File3
我想將它們合併爲單一的Git倉庫而我做了由 以下these說明。
這些指令後,我有以下結構:
folder
|- .git
|- repo1
| |- File1.txt
|- repo2
| |- File2.txt
|- repo3
| |- File3
這是偉大的。 但現在我有主枝(從repo1)和從兩部孤兒分支:
* Merge repo3
|\
| * Add third file
* Merge repo2
|\
| * Add second file
* Add first file
我希望得到的是這樣的
* Merge repo 3
* Add third file
* Merge repo 2
* Add second file
* Add first file
甚至更好
* Add third file
* Add second file
* Add first file.
是這樣的可能嗎?如何?
更多答案由VonC提供。
我開始與此:
$ git log --graph
* commit 888bb0d7a81a40f8b42da7ad3f02103e898f5c1f
|\ Merge: cf85078 eab1269
| | Author: Bojan Delic <...>
| | Date: Sun Oct 6 13:12:36 2013 +0200
| |
| | Merge repo3
| |
| * commit eab1269be53929450c34c30416820c13a8058678
| Author: Bojan Delic <...>
| Date: Sun Oct 6 13:07:39 2013 +0200
|
| Add third file
|
* commit cf85078ca96d52f2277ad7e4c6f45b04a38cf7ee
|\ Merge: 92fa311 42333f8
| | Author: Bojan Delic <...>
| | Date: Sun Oct 6 13:12:33 2013 +0200
| |
| | Merge repo2
| |
| * commit 42333f8589e20d29e5e444d5e16ff1a5d63b8288
| Author: Bojan Delic <...>
| Date: Sun Oct 6 13:07:09 2013 +0200
|
| Add second file
|
* commit 92fa3113507548a62407431188c308685f72865d
Author: Bojan Delic <...>
Date: Sun Oct 6 13:06:39 2013 +0200
Add first file
然後我做的:
$ git branch -v
* master 888bb0d Merge repo3
$ git checkout -b branch2 eab1269be53929450c34c30416820c13a8058678
$ git checkout -b branch3 42333f8589e20d29e5e444d5e16ff1a5d63b8288
$ git checkout branch2
Switched to branch 'branch2'
$ git rebase master
First, rewinding head to replay your work on top of it...
Fast-forwarded branch2 to master.
$ git checkout master
Switched to branch 'master'
$ git merge branch2
Already up-to-date.
$ git checkout branch3
Switched to branch 'branch3'
$ git rebase master
First, rewinding head to replay your work on top of it...
Fast-forwarded branch3 to master.
$ git checkout master
Switched to branch 'master'
$ git merge branch3
Already up-to-date.
之後:
$ git log --graph
* commit 888bb0d7a81a40f8b42da7ad3f02103e898f5c1f
|\ Merge: cf85078 eab1269
| | Author: Bojan Delic <...>
| | Date: Sun Oct 6 13:12:36 2013 +0200
| |
| | Merge repo3
| |
| * commit eab1269be53929450c34c30416820c13a8058678
| Author: Bojan Delic <...>
| Date: Sun Oct 6 13:07:39 2013 +0200
|
| Add third file
|
* commit cf85078ca96d52f2277ad7e4c6f45b04a38cf7ee
|\ Merge: 92fa311 42333f8
| | Author: Bojan Delic <...>
| | Date: Sun Oct 6 13:12:33 2013 +0200
| |
| | Merge repo2
| |
| * commit 42333f8589e20d29e5e444d5e16ff1a5d63b8288
| Author: Bojan Delic <...>
| Date: Sun Oct 6 13:07:09 2013 +0200
|
| Add second file
|
* commit 92fa3113507548a62407431188c308685f72865d
Author: Bojan Delic <...>
Date: Sun Oct 6 13:06:39 2013 +0200
Add first file
$ git branch -a
branch2
branch3
* master
也許我不明白,但沒有BRANCH2,只有'master'的和'HEAD ',並且他們指向提交'合併repo3',如果我添加了分支,指向提交'添加第三個文件'並且進行rebase和merge,就像你所建議的那樣,新分支移動到'合併repo3' commit,但是孤立分支仍然存在。 –
@ del-boy你說有兩個孤兒分支,所以我把他們稱爲'branch2'和'branch3'。'git branch -v'返回什麼? – VonC
是的,我很傷心有兩個孤兒分支,因爲我發現了這個術語,但是沒有任何指向anywh的真正的git分支除了主人之外,那指向頭。 'git branch -v'只返回'* master 888bb0d合併repo3'。 –