Подтвердить что ты не робот

Как предотвратить много конфликтов git при git перезаряжении партии коммитов?

Рассказ: в середине проекта мой коллега создал новую ветку от мастера и начал делать тяжелую работу по повторной факторизации. Я создал свою ветку у мастера и начал делать новые вещи на странице. Мы совершаем регулярные, но только я могу переустановить код для освоения (потому что изменения коллег слишком тяжелые и не могут быть развернуты из мастера). К сожалению, некоторые из наших работ основаны на тех же файлах. Поэтому, после нескольких дней работы, когда она, наконец, захотела переустановить свои изменения к мастеру, у нее было много конфликтов git.

my_branch    #---#----#-#-------#----#--#-----#---#----#----#
            /     \              \   \   \              \    \
master     *-------*--------------*---*---*--------------*----*----*
            \                                                     /
her branch   #------#-------#-----------#-----------#------------#

Вопрос 1 -: как предотвратить много конфликтов git, когда мы работаем над одними и теми же файлами? (или что является лучшей практикой в ​​этой ситуации?)

, но это не конец нашего вопроса,... чтобы быть абсолютно правильным, она попыталась выполнить переустановку от хозяина к своей ветке (чтобы иметь изменения, которые я совершил), поэтому карта фиксации должен выглядеть примерно так.

my_branch    #---#----#-#-------#----#--#-----#---#----#----#
            /     \              \   \   \              \    \
master     *-------*--------------*---*---*--------------*----*----*
            \                   \            \                    /
her branch   #------#-------#----*------#-----*-----#------------#

И это то, что нас беспокоит. Во время этих переделок она фиксировала эти конфликты. Но git не помнит своего решения по устранению конфликтов, поэтому, когда она сделала еще одну перезагрузку git от мастера к ее ветке, ей пришлось исправлять те же git конфликты снова, что она была исправление в предыдущих разделах.

Вопрос 2 -: как сообщить git запомнить git исправление конфликта после git rebase из основной ветки, поэтому после следующей перезагрузки нам не нужно исправлять те же конфликты снова?

4b9b3361

Ответ 1

К счастью, git имеет механизм для решения именно этой проблемы под названием git rerere - по существу, если у вас включен git rerere, то каждый раз, когда вы разрешаете конфликт, тот факт, что вы разрешили этот точный конфликт в определенном путь запоминается. Если снова возникнет тот же конфликт, то автоматически будет использоваться одно и то же разрешение. Ниже приведены полезные статьи:

... но по существу вы можете просто сделать:

git config --global rerere.enabled 1

... и забыть об этом, наслаждаясь более легким перезагрузкой/слиянием:)

Ответ 2

Убедитесь, что вы всегда перезагружаетесь с помощью переключателя --onto.

Чтобы предотвратить конфликты, используйте ветки с плавающим развитием. Каждый разработчик будет постоянно перестраивать свою ветку разработки. Это легко, так как разработчик знает, что он только что реализовал, и не должен иметь проблем с решением конфликтов. Вместо перезагрузки просто слейте финальную версию (она уже будет переустановлена).