2012-03-14 46 views
11

git rebase會在文件中內聯衝突標記;像這樣:git rebase可以應用離開衝突標記內聯嗎?

<<<<<<< HEAD 
Whatever line + context is different from the previous commit 
======= 
Whatever line + context is different from the commit being applied 
>>>>>>> new version, new branch:app/views/common/version.txt 

當我使用git apply來應用使用git format-patch創建的補丁時,它將無法保留默認修改的任何文件。我可以給它--reject這將導致它爲那些有無法解決的衝突創建.rej文件,但真的,我希望它修改文件,並讓每一個都處於git rebase所做的狀態,這樣我就可以打開文件,手動合併它,然後git添加它並告訴git apply繼續。有沒有辦法做到這一點,我只是不知道?

回答

6

對我來說,以下工作:

git init 
seq 1 30 > file 
git add file 
git commit -m 1-30 
sed -i '13a13.4' file 
git commit -m 'add 13.4' file 
git format-patch -1 
git reset --hard HEAD^ 
sed -i 13d file 
git commit -m 'remove 13' file 
git am -3 0001-add-13.4.patch 

file後有衝突標記。這是用git am -3而不是git apply

+0

嗯 - 有趣的是,確實似乎做我想要什麼。我認爲git使用了git apply - 也許它使用了一個不能通過git apply的命令行選項訪問的內部API。謝謝! – kcstrom 2012-03-17 20:18:23

3

使用三路合併選項:

git apply -3 0001-patch.patch