Какая разница между git rebase и merge --no-ff

Оба подхода, похоже, имеют ту же цель, что и чистая история:

Итак, если я сделал перезагрузку в ветки функции, мне все еще нужно --no-ff при слиянии с основной ветвью?

UPDATE:

Мне кажется, что существует путаница между сбрасыванием, быстрой перемоткой вперед и не быстрой сменой вперед, в основном диаграммой (рис. 3.28) в этой ссылке http://git-scm.com/book/en/Git-Branching-Rebasing показывает, что результат обычного слияния совпадает с слиянием --no-ff из верхнего ответа этой ссылки Почему git переключение по умолчанию происходит по умолчанию?

Ответы

Ответ 1

Это зависит от того, как вы хотите, чтобы ваша история выглядела.

Действительно простой пример:

*   33ad16c (HEAD, master) Merge branch 'feature-1'
|\  
| * e61c6a6 Various bug fixes
| * e15a356 Started feature
|/  
* 38b8ada Initial commit


* e61c6a6 (HEAD, master) Bug fix
* e15a356 Started feature
* 38b8ada Initial commit

Эти две истории отражают одни и те же коммиты, но с использованием --no-ff первая история действительно дает понять, как 2 из коммитов, где на самом деле часть одного и того же набора работ. Это позволяет вам точно знать, какая работа была включена в функцию, которая упрощает откат изменений или просто дает контекст при навигации по истории.

Вторая история не показывает этого различия и делает невозможным просмотр любой группировки работы

Пустое объединение слиянием, которое вы получаете с помощью --no-ff, также дает полезное место для зависания сообщения фиксации, тогда как простая фиксация дает вам нелегкое место, чтобы сказать: "Это коммит объединяется в работу для функции-x", что снова полезно для истории

Ответ 2

Как правило, если вы объединяете какую-либо ветвь функции, вы хотите использовать --no-ff для принудительно выполнить создание явного коммита слияния.

Если вы просто выполняете свою работу на какой-либо ветки, вы обычно хотите избегать коммитов слияния, которые могут возникнуть из git pull. Поэтому вы используете git rebase или git pull --rebase, чтобы не создавать фиксацию слияния и получать чистую историю.