上流

2013-06-15 9 views
9

あなたはgithubのレポを作成し、リモート上流

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

としてgithubのレポを追加したら、あなたは、私が読んで、あなたの最初の

git push -u origin master 

でコミットをプッシュする必要があるGitは何ですか(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?があることを知っていますが、私の意見では、上流が何であるかを正確には説明していません。特に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)。

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

をし、それがリモートブランチを表す、ここ.git/refs/remotes/origin/masterファイルを作成します。

は技術的には、追跡はあなたの.git/configmasterブランチに関する以下の情報を追加します。

+0

コマンド$ git push -u origin masterでマスターが指しているものの説明を追加してください。あなたの解決策を解決するものとして選択します。 – patriques

+0

@patriques追加されました。 –

+3

branch-refspecはそれほど難しいものではありません。 'master'は' master:master'の略で、最初の "master"はローカルを定義し、2番目の "master"はリモートブランチを定義します:) – KingCrunch

1

"Upstream"は、自分のブランチをクローンした(いくつかの)リポジトリで、コミットされたブランチ(そして場合によってはブランチ全体)に変更をプッシュします。 GitHubはあなたのリビジョンを一元管理された場所に保存するため、あなたのアップストリームとして機能します。

+2

これは微妙に間違っています。上流はブランチ間の関係であり、reposではありません。 – millimoose

+0

@millimoose:いいですか? –

+2

実際にはありません。 * Upstream *は、 "--set-upstream'が扱うことは、repoレベルでの関係ではありません。異なるローカルブランチは、そのアップストリームを異なるリモートのブランチに設定することも、ローカルブランチに設定することもできます。 (あなたのローカル 'master'を追跡するフィーチャーブランチなど)GitHubがあなたのアップストリームとして動作すると言うのは、開発ワークフローの文脈における用語の意味と、OPが持つGitの意味の意味を融合させるからです。尋ねる – millimoose

関連する問題