我有兩個Git倉庫,說PROJECT1和項目2和項目2位於PROJECT1的子文件夾:如何合併2個git存儲庫?
/project1/.git (with contents of project2/ ignored)
/project1/project2/.git
我想知道我怎麼能合併項目2到PROJECT1,用相同的文件夾結構,但保持project2的歷史?
我有一個簡單的解決方案嗎?
我有兩個Git倉庫,說PROJECT1和項目2和項目2位於PROJECT1的子文件夾:如何合併2個git存儲庫?
/project1/.git (with contents of project2/ ignored)
/project1/project2/.git
我想知道我怎麼能合併項目2到PROJECT1,用相同的文件夾結構,但保持project2的歷史?
我有一個簡單的解決方案嗎?
,我搬到項目2到一個臨時文件夾,然後:
git subtree add -P project2 ~/tmp_project2 PROJECT2_BRANCH
做得很好。
我只是先將project2
中的所有內容移動到一個子目錄中,然後簡單地將project2
修改後的存儲庫合併到project1
中。
假設你想在project2
作爲子模塊合併分支PROJECT2_BRANCH
的內容和記錄到分支PROJECT1_BRANCH
在project1
:最後
git clone /project1/project2 ~/tmp_project2
cd ~/tmp_project2
git checkout PROJECT2_BRANCH
mkdir project2
# The following line requires bash, it will not work in a POSIX shell.
# It basically "git mv"s into project2 everything except .git and project2
git ls-tree --name-only -z HEAD|{ while read -d '' f; do git mv "$f" project2; done; }
git commit -m "Moved everything into a new subdirectory project2"
git clone /project1 ~/project1_merged_with_project2
cd ~/project1_merged_with_project2
git checkout PROJECT1_BRANCH
git remote add proj2 ~/tmp_project2
git pull proj2 PROJECT2_BRANCH
git remote remove proj2
rm -rf ~/tmp_project2
好的,理解。我會試試這個。謝謝 – ed5978
[將多個git存儲庫合併爲一個,保留分支機構歷史記錄](http://stackoverflow.com/questions/26502970/merge-multiple-git-repositories-into-one-keeping-branches-history) – dmlittle
在我的情況下,這兩個git倉庫不在同一個文件夾層面 – ed5978
項目2中是否有分支機構,如果是的話,您是否也關注這些分支機構的歷史? – Leon