2015-12-17 2 views
3

Если я работаю над веткой, а затем понимаю, что мне нужно объединить другую ветку в мой, это мой текущий рабочий процесс (в этом примере можно сказать, что я работаю над своей веткой и хочу слиться в мастере):git pull на другую ветку

git stash 
git checkout master 
git pull 
git checkout my-branch 
git merge master 
git stash pop 

есть ли способ в Git тянуть ветку другой, чем в настоящее время проверило один, или есть лучший способ сделать это?

К примеру, вот что я хотел бы быть в состоянии сделать (опять же позволяет сказать, что я на ветви и хотите объединить в master):

git pull master 
git merge master 

странице человека ГИТ-тянущего говорит, что git pull - это просто получение, за которым следует слияние git, так есть способ сделать часть слияния git pull на ветке, отличной от той, которая в настоящее время проверена?

Или это то, о чем я прошу, просто невозможно?

+0

вы можете сделать ** get pull master ** в моей ветке, после вашей работы вы можете перейти к мастер-ветке и ** git объединить мою ветвь ** –

+0

Мне не нравится 'git pull', потому что это может ввести фиксацию слияния за вашей спиной, и я хочу, чтобы все мои ветви отслеживания обновлялись. С этой целью я [написал аддон] (https://github.com/jszakmeister/etc/blob/master/git-addons/git-ffwd), который будет извлекать и переадресовывать любую ветку отслеживания. Сам я и другие используют его в течение некоторого времени, и это определенно экономит время. Приятная часть состоит в том, что если это не ускоренное слияние, это позволит вам решить проблему и сделать ее лучше. Это хорошо работает для нас, так как мы часто используем рабочий процесс rebase. – jszakmeister

+0

Ах, я вижу ... вы хотите на самом деле принести свою ветку и с мастером. Мой инструмент этого не сделает. – jszakmeister

ответ

1

Попробуйте это:

git pull yourRepositoryName master 
+0

Я пробовал это, но, я думаю, я не понимал, что вам нужно было поставить для вашегоRepositoryName. На самом деле это не имя репозитория, а URL-адрес, который вы использовали для проверки репо. Например: 'git pull [email protected]: foo/bar.git master' – nobled

+0

Совершенно верно, я предположил, что вы сделали псевдоним для этого URL-адреса. Рад помочь! –

+1

А, если у вас есть псевдоним 'origin' по умолчанию, вы запустите' git pull origin master' – nobled

0

Вы также можете попробовать это:

git fetch 
git merge origin/master 

Это не будет обновлять локальный master указатель, но он будет объединять последнюю origin/master в текущей локальной ветви.

+0

Если мой локальный указатель 'master' не обновляется, то не будет слияние с' master' в 'my-branch' не будет найдено никаких изменений сливаться? (предполагая, что я уже объединил 'master' в' my-branch' перед запуском 'git fetch' и найденные изменения в' master') – nobled

+0

Предположим, вы находитесь на ветке 'master'. 'git pull' на самом деле просто ярлык для' git fetch', затем 'git merge origin/master'. Часть извлечения обновляет все ваши удаленные указатели отслеживания ('origin/master',' origin/whatever') и загружает все зависимые объекты. Это не делает никакого слияния - значит, теперь у вас есть варианты выбора того, что вы хотите объединить. – Peter

+0

Это хорошее чтение, с некоторыми хорошими диаграммами, иллюстрирующими это: https://git-scm.com/book/en/v2/Git-Branching-Remote-Branches – Peter

3

Я нашел колдовство, который работал для меня:

git fetch origin master:master 

затем (если вы хотите объединить сразу):

git merge master 

Я был очень удивлен, как трудно было найти ответ к этому, поскольку кажется, что это будет распространенный случай использования.

Смежные вопросы