2016-06-11 4 views
0

Пробовал variations из git rebase -i -Xours master, но все же конфликты отображаются, и я должен их разрешить вручную. Кроме того, не совсем ясно, что происходит с неконфликтными изменениями в случае конфликта конфликта - поддерживаются ли они?Git interactive rebase - любой способ поручить git разрешать конфликты, сохраняя версию HEAD?

Использование case: temp rebase несколько старых ветвей на главном компьютере, чтобы увидеть, есть ли такие изменения в этих ветвях (не в главном), но сохраняя версию кода в master для противоречивых изменений (ужасные, ужасные конфликты)

$ git --version 
git version 2.6.1.windows.1 

ответ

1
git ls-files -u | cut -f2- | uniq | git checkout-index --stdin --stage=all \ 
| while read base ours theirs path; do 
     git merge-file --ours \ 
       -L "$path" -L o/"$path" -L b/"$path" \ 
       -- $ours $base $theirs 
     mv $ours "$path" 
     rm $base $theirs 
done 
+0

Хаха спасибо - вы могли бы сломать это вниз немного для нас Bash недоносков? Думаю, я должен запускать это на каждом конфликте? Любой способ связать это с rebase? –

+1

Ницца! Опция '--stage = all' для' git checkout-index' была для меня новой. @Mr_and_Mrs_D: поместите вышеуказанное в скрипт, запустите 'git rebase -i', и всякий раз, когда он останавливается с конфликтами, запустите скрипт. По-моему, автоматизация этого требует модификации сценария интерактивной оболочки. – torek