Вы просите переписать историю n на 0 коммитов. Как правило, это плохая идея, так как это приведет к рассинхронизации вашего репо с удаленного и любого другого репо, основанного на нем. Это еще больше усложнит ситуацию, так что другие больше не смогут объединяться, и потребуется, чтобы любое другое репо удалило свою ветку и вытащило недавно измененную. В этом случае вы можете просто создать новую ветку и добавить к ней комментарии. В любом случае, это будет немного грязно.
Для этого у вас есть ваши слияния, которые вы будете просматривать (в качестве примера, мы будем использовать коммиты A
, B
и C
), а затем вернемся к A
, ответвимся что (мы назовем эту ветку обзор , а исходный запрос на извлечение -):
...A --B --C (pull-request)
\
A' (review)
git checkout HEAD{3}
git checkout -b review
Затем внесите изменения в комментарии и зарегистрируйте их.
git add. # or specify the specific files
git commit -m "message" --author="original author"
Или, если вам нужно то же сообщение/автор и вы не хотите его печатать, вы можете использовать следующее, которое я бы либо поместил в скрипт, либо в псевдоним команды git:
git add $(git diff-tree --no-commit-id --name-only -r <sha-of-A>)
git commit -m "$(git rev-list --format=%B <sha-of-a>)" --author="$(git rev-list --format=%an <sha-of-A>)"
Это также можно сделать автоматически, извлекая соответствующий sha из соответствующего родителя, но я не совсем уверен, как отличить родительский филиал от родительского банкомата слияния.
Следующее слияние B
с обзором
git merge <sha-of-B>
Затем внесите изменения в комментарии и зарегистрируйте их. (см. выше ).
Продолжайте делать это, пока не закончите и не получите:
...A --B --C (pull-request)
\ \ \
A'--B'--C' (review)
Затем вы можете снова объединиться с исходной веткой, если хотите, или просто вернуть эту ветку обзора человеку, от которого вы делаете обзор.