Мне 15 лет и только что начал использовать системы управления исходным кодом для управления моим кодом немного лучше, таким образом, я немного плохо знаком с этим материалом. Прямо сейчас у меня есть этот репозиторий:
[a]---[b]---[d]---[f] master
\
\
[c]---[e] develop
Я хочу закончиться здесь:
[a]---[b]---[d]---[f]---[g] master
\ /
\ /
[c]---[e]---/ develop
где g
эквивалентно выполнению фиксаций [c]
и [e]
на [f]
. Это git checkout master; git merge develop
, право?
Нарисованная вами картинка выглядит как результат git merge
, но ваше описание того, что вы хотите, звучит как git rebase
.
Заимствуя из главы «Перебазирование» книги сообщества git, если вы находитесь в ветке mywork
и говорите
$ git merge origin
, вы получите
Think объединения двух разных снимков: в этом случае C4 и C6 объединились, чтобы создать C7.
Rebase создает дерево, которое выглядит так же, как C7, но его история выглядит совершенно иначе. Скажем, вместо слияния вы дали команду
$ git rebase origin
, которую получили бы
. Когда вы обнаружите, что хотите: «Я действительно хочу, чтобы я создал ветвь mywork
в C4 вместо C2», git rebase
- джинн, который его предоставит.
Вы также можете думать о перебазировании как о вырезании ветви из вашей истории и переносе ее в другую точку. Не пропустите тонкое изменение с C5 и C6 на C5 'и C6'. Хотя деревья будут выглядеть одинаково, у них будут разные родители, что изменит их идентичность git.
Еще одна полезная информация о слиянии - это http://progit.org/book/ch3-2.html и http://gitref.org/branching / # слияние .
Это git checkout master
, чтобы попасть на ветку 'master', затем git merge develop
чтобы объединить ветку 'develop' с текущей веткой 'master'.
Вы хотите git checkout master; git merge develop
Это происходит потому, что git merge
принимает имя ветки, которую вы хотите объединить с текущей проверенной веткой. Таким образом, вы проверяете желаемую целевую ветвь (master), а затем сливаете с ней другую ветвь (develop).
Если вы посмотрите в первый раздел "Описание" на странице git-merge
man, вы увидите схему, почти идентичную вашей (хотя и перевернутую вертикально), которая описывает это.