Поскольку мне нужна чистая история, чтобы я мог поделиться кодом.
Обратите внимание, что у вас есть "чистая" история Git. «Пузыри», как у вас, показывают, какие коммиты были сделаны вместе как группа. Это дополнительная полезная информация для выяснения, почему был сделан коммит. Я бы рекомендовал оставить ваш репозиторий без изменений.
Чего вы хотите избежать, так это слияния «update», получающего последние обновления от master. Это то, что я называю "бухгалтерским" слиянием. Они запутывают историю и бесполезны для археологии.
* 11067971 [master]
|\
| * d3adb3f merge master again
|/|
* | 1234567 another master commit
| * daf9f2d Require compatible...
| * abc1234 merge master
|/|
| * 3547419 Public recompile.
* | e0d2740 N/A
* | 6b2385f Apply Codestyles:
|/
* 08c6f59 Change vendor user...
Вместо этого используйте git rebase
для обновлений, чтобы сохранить историю ветвей линейной.
git checkout feature
git rebase master
* daf9f2d [feature] Require compatible...
* 3547419 Public recompile.
* 1234567 [master] another master commit
* e0d2740 N/A
* 6b2385f Apply Codestyles:
* 08c6f59 Change vendor user...
Затем git merge --no-ff
(нет-fast-forward) для сохранения всплывающей подсказки.
git checkout master
git merge --no-ff feature
git branch -d feature
* abcd1234 [master] merge feature
|\
| * daf9f2d Require compatible...
| * 3547419 Public recompile.
|/
* 1234567 another master commit
* e0d2740 N/A
* 6b2385f Apply Codestyles:
* 08c6f59 Change vendor user...
Поскольку слияние ничего не делает, когда вы проверяете ветвь перед слиянием, вы также проверяли код и после слияния. Теперь вам нужно только один раз проконтролировать ветку.
Если вы хотите улучшить свою историю, используйте git rebase -i
, чтобы поместить что-то в эти N/A
сообщения коммита.
Но если вы хотитестереть эту важную информацию ...
- Восстановить мастер и ветку перед объединением.
Это эффективно отменяет объединение.
git branch -f master e0d2740
git branch -f feature daf9f2d
* daf9f2d [feature] Require compatible...
* 3547419 Public recompile.
* | e0d2740 [master] N/A
* | 6b2385f Apply Codestyles:
|/
* 08c6f59 Change vendor user...
- Перебазировать объект поверх мастера.
Ветвь функции была сделана поверх 08c6f59, но теперь вы помещаете ее поверх e0d2740. Могут быть конфликты.
git checkout feature
git rebase master
* daf9f2d [feature] Require compatible...
* 3547419 Public recompile.
* e0d2740 [master] N/A
* 6b2385f Apply Codestyles:
* 08c6f59 Change vendor user...
- Быстрая перемотка мастера к функции.
Выполнение слияния с прямым предком приведет к "быстрой перемотке вперед". Коммит слияния не требуется, Git просто перемещает метку ветки вперед.
git checkout master
git merge feature
* daf9f2d [feature][master]]Require compatible...
* 3547419 Public recompile.
* e0d2740 N/A
* 6b2385f Apply Codestyles:
* 08c6f59 Change vendor user...
git branch -d feature
* daf9f2d [master]]Require compatible...
* 3547419 Public recompile.
* e0d2740 N/A
* 6b2385f Apply Codestyles:
* 08c6f59 Change vendor user...