Что делает git слияние происхождения/мастера?
После извлечения из удаленного с помощью git fetch
нам нужно использовать что-то вроде
git merge origin/master
Я хотел бы знать, может ли эта команда также выполнять git commit
в одно и то же время? Является ли порядок origin/master
важным? Могу ли я написать master/original
?
Ответы
Ответ 1
git merge origin/master
может делать одну из двух (или ошибок).
В первом случае он создает новую фиксацию с двумя родителями: текущую HEAD
и фиксацию, на которую указывает ref origin/master
(если вы не делаете что-то смешное, это, вероятно, будет ( локальный указатель на) ветвь с именем master
на удаленном сервере с именем origin
, хотя это вполне условно).
Во втором случае, когда не требуется слияние древовидного уровня, а не создание нового коммита, он обновляет текущее значение ref, чтобы указать на тот же фиксатор, на который указывает origin/master
. (Это называется быстрым слиянием - git может быть перенаправлено либо всегда, либо никогда не делать этого, когда вы сливаетесь с флагами командной строки).
Он не вызывает непосредственно git commit
, что представляет собой более высокий уровень (фарфор в git -parlance), предназначенный для пользователей.
Вызов git merge master/original
будет пытаться и разрешить master/original
коммит, который почти наверняка (опять же, если вы не сделали что-то преднамеренное) не, как и origin/master
. Если у вас есть удаленный с именем master
, который имеет ветвь с именем original
, он создаст новый коммит, который имеет это как второй родитель.
Вы можете найти git help rev-parse
, чтобы помочь в расшифровке того, как git пытается разрешить имена ссылок или другие записи в commits.
Ответ 2
То, что это делает, объединяет ветвь, называемую origin/master, в вашу текущую ветку. Заказ очень важен. Слово origin означает место, из которого вы клонировали ваш репозиторий, т.е. Происхождение репозитория, мастер слова - это просто имя ветки, однако мастер обычно используется как основная ветвь или ветвь соединительной линии, как это называют некоторые другие системы.
Объединить, возможно, потребуется выполнить фиксацию в зависимости от состояния вашей разработки. Если ваша история не расходится с происхождением, она может делать так называемую "быструю перемотку вперед". Все, что нужно сделать, - это добавить новую историю поверх вашей. Если ваше развитие отклонилось от источника, тогда, если слияние может быть выполнено без конфликтов, слияние выполняется, и в HEAD записывается новая фиксация, чтобы указать слияние и два родителя.
Кроме того, если слияние не может быть выполнено из-за конфликта, ваша рабочая копия обновляется, чтобы отражать тот факт, что есть конфликты, а затем, когда вы их исправляете, вы вручную делаете фиксацию, которая записывает слияние.