我有幾個回購,我想合併成一個新的主回購,所有這些回購有獨特的歷史(絕對沒有共同承諾之間) 。我創建了新的主倉庫,在其他每個倉庫上創建了一個分支,並將每個分支推送到主倉庫。現在在master_repo中,將每個分支合併到master分支中都不會產生使用git merge -s和我們的簡單git合併(我已經從頭開始嘗試)的衝突......但是我無法合併這些嘗試從其他分支進入主分支的文件夾。我相信問題的一部分是沒有共同的祖先承諾。我可以重現該問題如下:git合併工作從多個回購沒有共同的祖先到新的回購
目錄結構設置test_merge內: master_repo(與文件夾01) other_repoA(與文件夾03) other_repoB(與文件夾01和09)
,然後在Cygwin中終端( 「...」=裁剪終端的消息):
$ cd master_repo/
$ git init
Initialized empty Git repository in .../test_merge/master_repo/.git/
添加文件與COMMITING ON master_repo碩士BRANCH
$ echo "text in file01" > 01/file01
$ git add *
warning: LF will be replaced by CRLF in 01/file01.
The file will have its original line endings in your working directory.
$ git commit -m "master_repo: first commit"
[master (root-commit) ...blah, blah...
1 file changed, 1 insertion(+)...blah, blah
添加文件,COMMITING ON other_repoA的主分支,增加新分支,推新分支master_repo
$ cd ../other_repoA
$ git init
Initialized empty Git repository...blah,blah
$ echo "text in file03" > 03/file03
$ git add *
...
$ git commit -m "other_repoA: first commit"
...
$ git checkout -b branchA
...
$ git status
On branch branchA
nothing to commit, working directory clean
$ git push ../master_repo branchA
To ../master_repo
* [new branch] branchA -> branchA
添加文件,COMMITING ON other_repoB的主分支,增加新分支,推新分支master_repo
$ cd ../other_repoB
$ git init
...
$ echo "text in file01 from other_repoB" > 01/file01
$ echo "text in file09 from other_repoB" > 09/file09
$ git add *
$ git commit -m "other_repoB: first commit"
...
$ git checkout -b branchB
...
$ git status
On branch branchB
nothing to commit, working directory clean
$ git push ../master_repo branchB
To ../master_repo
* [new branch] branchB -> branchB
一看master_repo
$ cd ../master_repo
$ git status
On branch master
nothing to commit, working directory clean
$ git branch
branchA
branchB
* master
$ ls
01
$ git checkout branchA
Switched to branch 'branchA'
$ ls
03
$ git checkout branchB
Switched to branch 'branchB'
$ ls
01 09
MERGE嘗試:注意是c ontent分支機構A和B似乎被忽略
$ git checkout master
Switched to branch 'master'
$ git merge -s ours branchA
$ ls
01
$ git merge -s ours branchB
Merge made by the 'ours' strategy.
$ ls
01
$ cat 01/file01
text in file01
$ git checkout branchB
Switched to branch 'branchB'
$ ls
01 09
$ cat 01/file01
text in file01 from other_repoB
最終的結果,我想看到的是文件夾03和09加追加到01/file01的master_repo和「從other_repoB」。我正在尋找甚至可能使用git(而不是手動複製任何東西)?
合併分支B後branchA的內容是什麼? –
branchA內容是包含「文件03中的文本」的03/file03。換句話說,master_repo中的branchA的內容與合併後的other_repoA的branchA的內容完全相同。爲了澄清,branchA和branchB沒有合併在一起;但是這兩個分支都被合併到master_repo的master分支中(當然,最終結果並不理想 - master沒有來自branchA和branchB的所有文件夾和文件)。感謝您嘗試幫助。 – mangi07