Я читаю книгу Pro Git и застреваю при перебазировании.
Ниже приведен сценарий:
Шаг 1
Шаг 2
Мы видим, что пульт дистанционного управления сделал перебазирование (не очень хорошая практика, потому что кто-то другой может работать на его основе).
Затем автор говорит:
Если вы сделаете git pull, вы создадите коммит слияния, включающий обе строки истории, и ваш репозиторий будет выглядеть так:
Я не понимаю, почему git pull
автоматически объединит C4
и C7
, потому что мы знаем, что обычно git pull
не выполняет слияния для васи вы должны объединиться самостоятельно, так почему же в этом случае git pull
объединяется для вас?
Редактировать:
Извините, я печатал и думал слишком быстро, я говорил о git fetch
это не слияние автоматически, git pull
слияние и git pull
= git fetch
+ git merge
.
Итак, мой вопрос: почему автор говорит:
Когдавы перебираете вещи, вы отказываетесь от существующих коммитов и создаете новые, похожие, но разные.Если вы куда-то вставляете коммиты, а другие сносят их и основывают на них работу, а затем переписываете эти коммиты с помощью git rebase и снова их подталкиваете, вашим соавторам придется заново объединять их работу, и когда вы попытаетесьвтяните их работу обратно в вашу.
Я действительно запутался, если разработчик не выполнил ребазинг после слияния, поэтому у нас есть изображение на шаге 1 в начале, затем разработчик добавилновый коммит под названием C8
сразу после C6
, затем, если я вызову git pull
на моем компьютере, C8
все равно нужно будет объединить с C7
, так что ему все равно придется заново объединить работу,нельзя избежать, и все станет грязно, так в чем же проблема?