Зашивка во время слияния

У меня проблема, которую только что придумал мой коллега, и мне интересно, как лучше всего работать с git. Эта проблема.

Допустим, у нас есть две ветви A и B. Теперь мы изменяем какой-то файл ( foo.c ) как в A, так и в B, поэтому мы получаем конфликт слияния, когда мы объединяем B в A. Теперь скажем, какой-то разработчик напортачил и оставил ветку A в нерабочем состоянии, и ошибка также находится в foo.c, но в строке, которая не была объединена.

Я вижу некоторые возможности справиться с этой ситуацией:

  1. Спрятать ожидающее слияние, исправить проблему на A, зафиксировать и затем снова применить слияние. Однако на данный момент я не уверен, как обрабатывать правильную стратегию слияния для изменений, которые оба вносили в foo.c. Сломанная часть может повлиять на некоторые вещи, которые я сделал, поэтому я не вижу четкого способа разрешения конфликтов.

  2. Отменить слияние, исправить проблему на A, а затем повторить слияние целиком.Однако я, возможно, уже разрешил другие конфликты, поэтому это может потерять много работы.

  3. Возьмите --theirs / - нашу версию файла, выполните слияние, исправьте изменения, выделите потерянные изменения. Однако потом я внесу некоторые изменения дважды.

  4. Другое решение, о котором я не могу придумать.

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

Как бы вы справились с такой ситуацией?

6
задан LiKao 23 November 2011 в 15:57
поделиться