2016-09-26 4 views
2

кроме меня есть следующий GIT репозиторий:Автоматически разрешать конфликты GIT для некоторых файлов

oooooooooooooo 
    o  o 
    o V1 o V2 
    o 
     o MyChange 

У меня есть git diff для V1..MyChange. Теперь я хотел бы объединить все до V2 и создать новый diff для V2..MyChange.

Как я могу сказать Git, чтобы автоматически разрешать все конфликты, принимая V2, за исключением файлов, присутствующих в V1..MyChange diff?

Я попытался

git checkout MyChange 
git merge V2 

, и я получаю 100s конфликтов с обеих модификаций файлов и удаления файлов. Я просто хочу взять все от V2, за исключением файлов, которые меня интересуют MyChange.

+1

Кажется, что это проще (и, вероятно, более корректно), чтобы достичь этого с помощью 'cherry-pick', применяя исправления или используя' rebase'. –

ответ

1

Похоже, у вас есть пара патчей, которые в настоящее время применяются поверх V1, и вы хотите обновить свое репо и применить свои исправления поверх V2. Как упоминалось в @Yehezkel's comment, rebase - лучший способ сделать это.

В частности, вы можете сделать:

git checkout MyChange 
git rebase --onto V2 V1 

Или просто:

git rebase --onto V2 V1 MyChange 

Это заставит вашу историю, чтобы выглядеть следующим образом:

oooooooooooooo 
    o  o 
    o V1 o V2 
      o 
       o MyChange 

Вы можете все еще есть конфликты, но он должен быть ограничен фактическими конфликтами, то есть f которые изменились как в V2, так и в ваших патчах.

+0

спасибо, я попробую это. Раньше я не использовал '-onto', что приводило ко многим конфликтам, поэтому перезагрузка прерывалась все время, сообщая мне сначала исправить конфликты. – siamii

+0

Я пробовал это сейчас, rebase останавливается при каждой фиксации из-за конфликтов. Не уверен, как это решить, похоже, что я переработал всю работу по разработке функций вручную. – siamii

+0

@siamii Эти фактические конфликты (вещи, которые вы изменили в 'MyChange', которые также были изменены в' V2')? Или вам нужно переделывать уже завершенные разрешения конфликтов? Если последнее, то ['git rerere'] (// stackoverflow.com/a/7241744/2747593) может оказаться полезным. –

Смежные вопросы