我開始學習git 1.8.2中的子樹合併。我創建了一個簡單的示例來測試對第三方回購協議遷移到主項目中的更改。合併簡單的上游變更時Git Subtree報告衝突
我正在關注6.7 Git Tools - Subtree Merging示例。
'sub'項目作爲'main'項目的一個子目錄包含在內。
當我對'sub'項目進行更改後,當我嘗試將更改合併到'main'項目中時,git會報告衝突。
測試總結
- 對項目的主要「和「子」(子而非機架)
- 遠程命名sub_remote加入主要是指子
- 軌道創建回購使用sub_remote sub_branch
- 更改並提交'sub'項目文件中的一行
- 將sub轉換爲主/ sub_branch
- 將main/sub_branch合併到主/主設備中。
合併因衝突而失敗。合併關於要保留的更改行的哪個版本感到困惑。
<<<<<<< HEAD
main
=======
main upstream change
>>>>>>> sub_branch
main.git
sub
sub.git
tm
完整的測試腳本
#!/bin/sh
# initialize empty repos
for i in main sub
do
rm -rf $i{,.git}
mkdir $i.git
cd $i.git;
git --bare init;
cd ..;
git clone $i.git
cd $i
echo $i > readme.md
git add readme.md
git commit -a -m "added readme.md"
git push origin master
cd ..
done
# add data to sub
ls > sub/data
cd sub
git add data
git commit -m "Added data"
git push origin master
cd ..
# add sub as a sub-tree in main
cd main
git remote add sub_remote ../sub.git
git fetch sub_remote
git checkout -b sub_branch sub_remote/master
git checkout master
git read-tree --prefix=sub/ -u sub_branch
git commit -m "Added sub"
git push origin master
cd ..
# make change to sub
cd sub
sed -i -e 's/main$/main upstream change/' data
git commit -a -m "upstream change made to data"
git push origin master
cd ..
# merge sub change to main
cd main
git checkout sub_branch
git pull
#merge sub_branch changes into master
git checkout master
git merge -s subtree sub_branch
cat sub/data
覆蓋子樹合併的git-scm書中的新頁面位於:https:// git-scm。com/book/en/v2/Git-Tools-Advanced-Merging#其他類型的合併但是,我認爲它仍然遭受同樣的問題。 – 2016-03-30 23:36:15