В чем разница между git pull
, git fetch
и git rebase
? Я чувствую, что тянуть и извлекать - одно и то же.
в чем разница между git pull, git fetch и git rebase?
Ответы (1)
Получить: обновите локальные, добавив удаленные изменения, но не объединяйте ни с одним локальным филиалом.
По запросу: обновите локально и объедините изменения с помощью current-branch.
git fetch
: получить последние изменения из источника (без слияния)git pull
=git fetch
+git merge
Если вы переустановите ветку
feature
на веткуmaster
.git rebase master
, веткаfeature
commits/changes
останется наверху.Допустим, у вас есть две фиксации в ветке
master
(A
->C
) и две фиксации в веткеfeature
(B
->D
).Предположим, вы находитесь в
feature
ветке (git checkout feature
). Теперь, если выmerge master
, тогда история коммитов:(previous commit) - A -- C <- master \ \ B -- D -- M <- feature
Здесь
M
дляnew-merge-commit-sha
.Для
rebase master
история фиксации: (A
->C
->B'
->D'
).
person
Sajib Khan
schedule
12.02.2017
Обычно вы переустанавливаете
feature
на master
, а не наоборот.
- person Code-Apprentice; 12.02.2017
И
git merge master
приведет к гораздо более сложной истории коммитов, чем то, что вы видели.
- person Code-Apprentice; 12.02.2017
Согласитесь, @ Code-Apprentice, здесь я попытался показать
simple/generic
разницу.
- person Sajib Khan; 12.02.2017
Сохранять простоту - это нормально, пока она верна. Как у вас здесь, история коммитов неверна в вашем абзаце о
git merge
.
- person Code-Apprentice; 12.02.2017
Также неверна формулировка, описывающая перебазирование.
git rebase master
переустановит текущую ветку на master
.
- person Code-Apprentice; 12.02.2017
Да, здесь я предполагаю, что текущая ветка -
feature
. git checkout feature
, git rebase master
. Итак, он переставит feature
на master
.
- person Sajib Khan; 12.02.2017
Измените, пожалуйста, свой ответ, чтобы это было сказано.
- person Code-Apprentice; 12.02.2017
Я уже ответил на это.
"Assume you are in feature branch. Now if you merge master then..."
- person Sajib Khan; 12.02.2017
Какое отношение эта цитата имеет к перебазированию? Я говорю о том, если вы переставляете главную ветку в функциональную ветку. git rebase master ... что неверно. Вы не перемещаете главную ветвь в функциональную ветку, а просто переставляете функциональную ветку в главную ветвь.
- person Code-Apprentice; 12.02.2017
Понятно (это была ошибка), спасибо.
- person Sajib Khan; 12.02.2017
Вам также следует исправить иллюстрации истории коммитов, чтобы показать правильную историю слияния.
- person Code-Apprentice; 12.02.2017
Исправлена история коммитов!
- person Sajib Khan; 12.02.2017
История фиксации для
git merge
по-прежнему неверна. История не будет линейной.
- person Code-Apprentice; 12.02.2017
Отредактировано. Теперь все в порядке?
- person Sajib Khan; 12.02.2017
git pull --rebase
эквивалентен двум последним - person Pockets   schedule 12.02.2017