git интерактивно просматривает изменения ветки

В нашей исследовательской группе мы часто используем git для совместной написания статей (латекс). Как правило, ведущий автор имеет роль "сопровождающего" и контролирует мастер через github / gitlab, другие вносят свой вклад в ветки функций, исправляя опечатки, формулировки, разделы и т. Д. (И обычно не делают или не могут перейти к защищенному мастеру).

Допустим, история выглядит так:

A -- B -- C -- D <-- master
      \
       E -- F -- G <-- patch-1

Теперь, как ведущий автор / сопровождающий, я хотел бы рассмотреть изменения в ветке patch-1. Обычно это часть запроса на слияние. Если я согласен со всеми изменениями в нем, есть отличная поддержка инструментов, и я могу просто объединить. Однако иногда я хочу отклонить изменение строки. В этих случаях поддержка инструмента обычно прекращается. Возможно, я смогу нажать "изменить", но сейчас нахожусь в состоянии патча-1, и мне нужно вручную выкопать версии Б для тех изменений, которые я не хочу принимать.

Есть ли что-то вроде интерактивного коммита (git commit --interactive) что я могу использовать, чтобы поддержать меня?

В конце я пытаюсь создать такую ​​ситуацию:

A -- B -- C -- D -------J <-- master
      \                /
       E -- F -- G -- H

куда H мой "обзорный коммит", который отменяет несоответствующие изменения E-G а также J мое тогда очень простое слияние.

2 ответа

На данный момент я использую следующий упрощенный (но, вероятно, неоптимальный) рабочий процесс:

git checkout -b tmp patch-1
git reset B
# now use my editor of choice that has git gutter (e.g., sublime text)
# review changes, revert those that i don't like, adapt others
# when done:
git reset patch-1
git commit -a
git checkout master
git merge tmp
git checkout patch-1
# e.g. one change you don't like is in commit G
git revert G
git reset HEAD~
# At this point you have changes _reverting_ G in the index.
# Now you work on the index to get rid of the changes reverting those in G that you DO want to keep.
git commit
git checkout master
git merge patch-1

Этот рабочий процесс несколько проще, чем у вас, с двумя бонусными баллами:

  1. patch-1 остается push-совместимым с пультом.
  2. Все первоначальные изменения вашего коллеги сохраняются, а ваши изменения явно хранятся в отдельном коммите.
Другие вопросы по тегам