git pull --rebase - удален ли ребаз на локальную ветку? - PullRequest
0 голосов
/ 25 октября 2018

Я просматривал некоторые основы Git, и в этой документации Atlassian о вытягивании, слиянии и перебазировании есть одна вещь, которую я не совсем понимаю.Базовое состояние веток выглядит следующим образом (на странице есть реальные изображения, я не могу опубликовать их со своей репутацией):

                         A - B - C (Master on remote origin)
                       / 
(Local origin/master) D - E - F - G (Local master)

Теперь мы хотим получить изменения с пульта и переназначить их,Я бы ожидал, прочитав другую документацию и поигравшись с rebase, git pull --rebase воспроизведет коммиты E-F-G поверх A-B-C.Но вместо этого в учебнике Atlassian говорится, что результат выглядит так:

                         A - B - C (Master on remote origin)
                       / 
(Local origin/master) D - E - F - G  -  A - B - C (Local master)

Таким образом, удаленные изменения были перенесены в локальную ветвь.Я не думал, что это работает так (по крайней мере, без специальных команд), и это также кажется более агрессивным, чем альтернатива.Если бы вы нажали сейчас, вы бы все-таки переписали большую часть истории пульта.

Правильна ли здесь документация и в каких случаях это происходит?Большинство описаний, кажется, подразумевают или показывают, что удаленная ветвь извлекается, а ваша локальная ветвь перезагружается поверх нее, что также, по-видимому, имеет смысл.

Я полагаю, что я что-то неправильно понимаю, или я неправильно читаюцифры.

1 Ответ

0 голосов
/ 25 октября 2018

Вы абсолютно правы, этот урок неверен.То, что вы ожидали (и наблюдали), это то, что делает git pull --rebase.Документация Git говорит в man git-pull:

-r
--rebase[=false|true|merges|preserve|interactive]

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

С currentветвь они ссылаются на локально извлеченную ветвь, с восходящая ветвь они ссылаются на удаленную ветвь.Обратите внимание, что --rebase эквивалентно --rebase=true.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...