Как избежать такого количества конфликтов слияний в этой ситуации? - PullRequest
0 голосов
/ 01 октября 2019

Я понимаю, что конфликт слияния возникает, когда есть "конкурирующие" коммиты. В ситуации, когда есть только одна ветвь репо, и есть два участника, оба с правами на запись, я предполагаю, что конфликт слияния реализуется, когда второй коммит пытается протолкнуться «поверх» первого, который задействовал общую файловую строку.

Как нам избежать этой ситуации? Поскольку мой соавтор и я редко редактируем один и тот же файл, я предложил ему просто

git pull origin master 

, прежде чем он начнет работать над чем-либо. Однако он сообщил об этой ошибке:

error: You have not concluded your merge (MERGE_HEAD exists)

Я спрашиваю, потому что большинство объяснений конфликтов слияний включают обращения к ответвлениям и запросам ветвления, и, возможно, нет необходимости упоминать их, чтобы получить объяснение.

1 Ответ

0 голосов
/ 01 октября 2019

Согласно github , конфликты слияния возникают, когда вы объединяете ветви с конкурирующими коммитами, и Git нужна ваша помощь, чтобы решить, какие изменения включить в окончательное слияние.

Git часто можетразрешать различия между филиалами и автоматически объединять их. Обычно изменения находятся в разных строках или даже в разных файлах, что делает слияние простым для понимания компьютерами. Тем не менее, иногда есть конкурирующие изменения, которые Git не может решить без вашей помощи. Часто конфликты слияния возникают, когда люди вносят разные изменения в одну и ту же строку одного и того же файла или когда один человек редактирует файл, а другой человек удаляет один и тот же файл.

В вашем случае одна ветвь репо и двеили больше участников должны выдвинуть свои коммиты. В нашем стартапе у нас также есть такой же подход для быстрой итерации. Этот подход выглядит следующим образом:

  1. Убедитесь, что у вас обоих есть чистая ветвь для запуска.
  2. Всякий раз, когда кому-то приходится нажимать свой коммит, сначала stash вносите свои изменения, если они есть.
  3. Затем выполните git pull --rebase, чтобы использовать стратегию слияния ребаз. (этот шаг гарантирует, что ненужный конфликт не возникнет, просто выполнение git pull приведет к pull изменениям и merge с rebase pull и merge.
  4. Затем нажмите туда изменения с git push.

Больше нет конфликтов, когда какой-то один push-коммит перед другим человеком.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...