2012-03-14 23 views
11

git rebase lascia i marcatori di conflitto incorporati nei file; qualcosa di simile:Git può applicare marcatori di conflitto di ferie in linea come 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 

Quando uso git Applica per applicare una patch creata con git format-patch, non riuscirà a lasciare tutti i file modificati per impostazione predefinita. Posso darglielo --reject che causerà la creazione di file .rej per quelli che hanno conflitti irrisolvibili, ma in realtà, voglio che modifichi i file e lasci tutti nello stato che fa git rebase così posso semplicemente aprire il file, unirlo manualmente, quindi aggiungerlo e dire a git apply di continuare. C'è un modo per farlo che non conosco?

risposta

6

Per me le seguenti opere:

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 

Dopo che file ha marcatori di conflitto. Quello è utilizzare git am -3 anziché git apply.

+0

Hmmm - interessante che non sembra davvero fare quello che sto volendo. Ho pensato che git sia usato git apply - forse usa un'API interna che non è accessibile attraverso le opzioni della riga di comando di git apply. Grazie! – kcstrom

3

Utilizzare l'opzione con tre vie di unione:

git apply -3 0001-patch.patch