2012-06-13 5 views
1

, если другой разработчик разветвляется на ветке DEVELOPER_A и совершает много коммитов на этой ветке, когда он закончил, я хочу объединить свою работу с мастером. но я не хочу, чтобы все его мелкие коммиты появлялись в истории мастер-филиала и заботились только о последнем фиксации. так есть способ «скворовать» его историю на ветке DEVELOPER_A при слиянии этой ветки?при слиянии ветки git, как избежать коммитов в ветке?

я мог получить участок на developer_A ветви, и обратиться к мастеру, но я боюсь, что мерзавец будет терять тот факт, что результат сливается из developer_A ветви, а просто думает, что это какое-то независимое изменение

Thanks Yang

+0

Возможные дубликаты: http://stackoverflow.com/questions/5308816/how-to-use-git-merge-squash, http://stackoverflow.com/questions/9599411/git-merge-no-commit- сквош-разница. –

ответ

2

Вы можете сделать это несколькими способами, но наиболее очевидным является использование сжатого слияния.

git merge --squash <other_branch> 
git commit 

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

0

Большую часть времени вы хотите очистить историю, а не просто все вместе. Инструментом для этого является git rebase (используйте с особой осторожностью, и никогда не на публикуемом материале, так как изменение истории создает хаос для ваших нисходящих потоков).

OTOH, очень полезно иметь подробную историю (микрокоманды) под рукой для чеканки ошибок (посмотрите на git bisect).

Смежные вопросы