Насколько я пытаюсь, есть только кнопка, которая показывает автоматическое слияние (если нет конфликта), и мы не можем выбрать, какой коммит мы хотим принять.
Подобным образом вы используете Git для локальной фиксации перед отправкой в GitHub, ничто не мешает вашему соавтору вытянуть вашу вилку из GitHub, слить локально, а затем вытолкнуть обратно его форк слитых коммитов.
GitHub добавляет только «ярлык» для объединения запросов извлечения. Это не единственный и единственный способ сделать это.
Учитывая ваш вопрос, вы должны использовать Git. GitHub UI работает только для простого слияния. У вашего соавтора есть два эксклюзивных варианта:
- вишня 3 из 4-х коммитов вручную
- объединить 4 коммита, затем вернуть нежелательный коммит
Последний вариант возложит на вас бремя:
- Создать локальную ветку, указывающую на первый коммит
- Черри выбери два оставшихся коммита, которые тебя интересуют
- Нажмите эту ветку и откройте новый запрос на получение от нее
Но как только соавтор извлечет файлы, коммит, который я не отправил, будет включен автоматически.
Похоже, вы совершаете на master
. Обычно каждый разработчик создает одну ветку на тему (ошибка или новая функция). Вся работа, связанная с этой темой, выполняется в этой ветке. Как только это закончится, вы нажимаете эту ветку, открываете запрос на извлечение из нее.
Либо запрос на слияние объединяется, и в следующий раз, когда вы извлечете из основного репозитория, ваша работа теперь будет интегрирована в основную ветку. Или запрос на получение ответа был отклонен, и вы можете избавиться от этой ветки тем или переработать ее.
Время от времени может случиться, что ветка темы будет слишком старой для объединения без конфликтов. Сопровождающий может потребовать от вас перебазировать вашу ветку поверх текущей HEAD и force-update
ваш запрос на извлечение с этой обновленной веткой.
Этот довольно полный пост поможет вам разобраться в деталях этого рабочего процесса Git .