Вот мой совет:
- Создайте новую ветку:
feature_commit_c
at master
(похоже, это branch 3
) - Объединить фиксацию C (don Там нет необходимости в ветке, используйте ha sh) в
feature_commit_c
, чтобы сделать вашу первую фиксацию в этой ветке. - Внесите любые необходимые изменения, связанные с «только частью фиксации C». Протестируйте, подготовьте, сделайте любые другие обновления и новые коммиты.
- Создайте PR из новой ветки на
master
- Полный обзор PR по требованию команды
- Объединить на
master
Это должно быть самое чистое. Я всегда начинаю новые ветки с того места, где они будут снова сливаться, и сбоку сливаю из других веток, если мне нужны их существующие изменения. Таким образом можно избежать некоторых проблем и гораздо точнее показать ваши намерения, но эта часть зависит от вас.
Обратите внимание на другие ваши вопросы
Git просто смотрит на текст, он не знает, откуда он. Если он такой же, то разница не покажет. Итак, как вам удастся внести частичные изменения из C (прикрепите ли вы их к A с помощью копирования / вставки или выборочного сброса файлов из фиксации C), зависит от вас.
После объединения A и получите ваши частичные C изменения, разница между веткой a- c -d и вашей новой веткой должна быть просто остальной частью C и всем D.
Вы всегда можете иметь конфликты на хозяине, это только часть сделки. Но это должно происходить только в бинарных файлах, которые меняются, или в комбинациях файлов / строк, которые меняются в обеих ветвях, после игнорирования общих вещей (из базового коммита + всего, что было выбрано полностью).