Это все довольно основной материал:
# make sure your notion of the remote is up to date
git fetch origin
# create and check out a branch, at the same place as the remote master branch
git checkout -b origin-master origin/master
# merge your local master
git merge master
# test, edit away, hack hack hack
git add ...
git commit ...
# push back to origin
git push origin origin-master:master
Терминология отмечает:
Натяжение представляет собой сочетание извлекая и слияния. Когда вы работаете с локальными филиалами, нет необходимости извлекать, поэтому вы объединяетесь, а не тянете.
HEAD не означает, что вы думаете, что это значит. (Возможно, вы являетесь человеком cvs/svn.) HEAD - это только что зафиксированное в данный момент фиксация (обычно называемое именем ветки). Таким образом, вы не объединяете HEAD, вы объединяете эту ветку. Я назвал его хозяином здесь.
Что касается вашего вопроса о лучших рабочих процессах, чтобы сделать то же самое ... хорошо, это довольно сложно ответить. Ваши цели немного неоднозначны. Вы сказали «медленно» синхронизировать и ссылаться на «окончательно слияние», но шаги, которые вы наметили, делают все сразу, поэтому ... ну, все это слилось. Больше нечего делать. Если вы хотите сделать это постепенно, вы можете просто повторить шаги, которые я дал, выбрав промежуточные фиксации в истории, чтобы объединиться каждый раз. Также немного непонятно, в каком направлении вы хотите слияния. Возможно, вы действительно хотели начать с своего филиала и объединить в него удаленные материалы?
git checkout -b master-merging master
git fetch origin
git merge origin/master
# test, hack, commit, push...
git push origin master-merging:master
Или с возрастающими слияниями:
git checkout -b master-merging master
git fetch origin
git merge origin/master~20 # 20 commits before origin/master
# test, hack, commit
git merge origin/master~10 # 10 commits before origin/master
# test, hack, commit
git merge origin/master
# test, hack, commit, push...
Хм. Это очень полезно, но я не уверен, где находится «ветка»? Кажется, все, что вы делаете в мастер? – jayunit100
Строка 'git checkout -b', как указано в комментарии выше, создает ветку. Я назвал его «origin-master», чтобы указать, что он представляет собой ведущую ветвь оригинала. – Cascabel
Обычно мои ветви называются что-то вроде «нового-gui-эксперимента». Почему вы называете ветку, используя такие общие термины? – jayunit100