2013-06-15 9 views
9

Когда вы создали GitHub репо и добавил в GitHub репо как удаленныйЧто такое мерзавец перед

git remote add origin https://github.com/githubname/reponame.git 

, то вам нужно нажать ваш первый коммит

git push -u origin master 

Я прочитал (Why do I need to do `--set-upstream` all the time?), что это сокращенная форма для выполнения

git branch --set-upstream-to my_branch origin/my_branch 
git push 

что такое вверх по течению именно и почему мне нужно установить? Об этом в сети мало информации. Я знаю, что есть аналогичная тема What does 'git remote add upstream' help achieve?, но, на мой взгляд, она не объясняет точно, что происходит вверх по течению и что делает git push -u origin master, особенно то, что есть origin master, указывая на это, это местное репо или удаленное репо?

+0

См. Также этот вопрос: https://stackoverflow.com/questions/5697750/what-exactly-does-the-u-do-git-push-u-origin-master-vs-git-push-origin- ma – TuringTux

ответ

20

В команде

git push -u origin master 

-u флаг означает, что местное отделение будет стать отслеживания ветви. То есть ветвь, которая отслеживает удаленную ветвь, так что будущее git pull будет знать, какая ветка для слияния и git push будет направлена ​​в правильную ветку.

origin - пульт дистанционного управления, на который вы нажимаете.

master - параметр refspec. Параметр refspec указывает, какая локальная ветвь переводится в какую удаленную ветвь. Это может быть сложно, но в этом случае короткая форма master означает, что выталкивает локальную ветвь master в удаленную ветку с тем же именем, origin/master.

Технически отслеживания добавляет следующую информацию о master ветви к вашему .git/config:

[branch "master"] 
    remote = origin 
    merge = refs/heads/master 

и создает файл здесь .git/refs/remotes/origin/master, представляющий удаленный филиал.

+0

Можете ли вы добавить объяснение о том, что указывает хозяин начала в команде $ git push -u origin master, и я выберу ваш ответ как разрешающий. – patriques

+0

@patriques Добавлено. –

+3

Ветвь-рефлекс не такая уж трудная: 'master' не хватает' master: master', где первый «мастер» определяет локальный и второй «мастер» удаленной ветвью :) – KingCrunch

1

«Восходящий поток» - это репо, которое вы клонировали (некоторые из) ветвей от вас и где вы вносили изменения в эти ветви (и, возможно, целые новые ветви), как только они были совершены. GitHub действует как ваш восходящий поток, потому что они хранят изменения для вас в централизованном месте.

+2

Это неправильно неправильно. Upstream - это взаимосвязь между ветвями, а не репозиториями. – millimoose

+0

@millimoose: Лучше? –

+2

Не совсем. * Upstream *, в смысле «то, что« -set-upstream »имеет дело с», вовсе не является отношением на уровне репо. Различные локальные филиалы могут иметь свои восходящие потоки для филиалов в разных пультах или даже локальных ветвях. (Например, ветви функций, которые отслеживают ваш локальный 'master'.) Высказывание« GitHub действует как ваш восходящий поток »просто вводит в заблуждение, поскольку оно объединяет значение термина в контексте рабочего процесса разработки и его значение в языке Git, которое OP спрашивать о. – millimoose

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