Как объединить ответвление и сохранить авторство

скажем, то, что мой colleage John создал ответвление по имени 'Джон'. Это имеет 10 фиксаций John. Когда дело доходит до слияния назад для освоения они просят, чтобы я сделал слияние.

Это - то, что я делаю

git checkout -b john origin/john
git rebase master
git checkout master
git merge john --squashed
git add .
git commit -m 'merged branch john'

Однако теперь то, что происходит, - то, что это - мой идентификатор против объединенной фиксации. И позже люди приезжают, спрашивая меня, почему я изменял определенную часть кода.

Как я сворачиваю весь comitts в ответвлении Джона в одну фиксацию, таким образом, что John является автором. Я предполагаю, что мерзавец фиксирует интерактивный, может помочь, но мог не совсем понять.

16
задан Nick Vanderbilt 22 July 2010 в 01:50
поделиться

2 ответа

Проблема в том, что git merge --squash применит те же изменения, что и обычное слияние, но без сохранения информации о слиянии. Затем, когда вы совершаете коммит, он такой же, как и любой другой, который вы делаете: он приписывается вам. Вы можете изменить информацию об авторе коммита с помощью git commit --author = "Original Author " . См. git-commit (1) для получения дополнительной информации о переключателе - author .

Но у меня вопрос: почему вы подавляете слияние? Почему бы просто не сделать слияние без сжатия? Если кто-то выполнит git blame , он будет соответствующим образом отнесен к фиксации первоначального автора.

9
ответ дан 30 November 2019 в 21:10
поделиться

Если вы сделаете следующее:

git checkout -b john origin/john
git rebase master
git checkout master
git merge --no-ff john # forces a merge commit to be recorded

вы сможете и сохранить авторство коммитов Джонаи сможете отменить слияние, отменив SHA коммита слияния.

8
ответ дан 30 November 2019 в 21:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: