Как объединить несколько коммитов в один без потери истории - PullRequest
5 голосов
/ 31 мая 2011

У меня есть несколько коммитов в одной ветке. Когда я отправляю эти коммиты для проверки кода, наш инструмент проверки кода создает один обзор для каждого коммита.

Чтобы избежать этого, я хочу объединить несколько коммитов в один коммит. В то же время я не хочу терять историю коммитов. Можно ли создать новую ветку только для проверки и объединить все коммиты в моей основной ветке с одним коммитом в моей рецензионной ветке? Как мне это сделать?

Ответы [ 2 ]

6 голосов
/ 31 мая 2011

Вы не хотите сделать это.Реальная история в том смысле, как вы сделали коммит, ничего не стоит.Чанки подходящего размера для обзора интересны, так что просто rebase -i ваша рабочая ветвь объединяет коммиты с управляемыми по размеру и наиболее важными логическими чанками, публикуйте их для обзора и забывайте об исходной истории.

* 1005Тем не менее, чтобы объединить коммиты, вы можете использовать:
git merge --squash

Git не будет выбрасывать историю.На самом деле это не происходит в rebase, но в этом случае предыдущая версия истории остается доступной только через «reflog», и только если у вас есть срок действия для reflogs (IIRC по умолчанию составляет 90 дней), в конечном итогестанет недоступным и git gc выбросит его.Но с помощью сквоша оригинальная ветвь просто остается там, и вы все равно можете назвать ревизию из reflog.

Однако рецензируемая история будет объединена с центральным мастером с помощью инструмента рецензирования, и никто никогда не увидит вашу оригинальную историю.,Вы можете держать это рядом, но это не будет связано с официальным, и никто никогда не будет смотреть на это так или иначе.

5 голосов
/ 31 мая 2011

Я не знаю ваш инструмент обзора, но это может сработать

git checkout review
git merge --squash master

http://www.kernel.org/pub/software/scm/git/docs/git-merge.html

...