2017-07-18 11 views
4

最近まで、私は--trackgit branchのスイッチに気づいていませんでした。私はドキュメントを読んでこのコマンドを試しましたが、それは私には意味がありません。いつgitブランチを使用するのですか?--track(start "watching upstream"の意味)?

--track

新しいブランチを作成する場合、新しいブランチからの「上流」としてスタートポイント ブランチをマークするbranch.<name>.remotebranch.<name>.merge構成エントリを設定します。この設定では gitに、2つのブランチの関係をgit status とgit branch -vに表示します。さらに、新しいブランチがチェックアウトされたときに、引数なしでgit pullにアップストリームをプルするように指示します。

この動作は、開始点がリモートトラッキング ブランチの場合のデフォルトです。 git checkoutgit branchが常に --no-trackが指定されたかのように動作するようにするには、branch.autoSetupMerge構成変数をfalse に設定します。開始点がローカルトラッキングブランチまたはリモートトラッキングブランチのいずれかである場合にこの動作を実行する場合は、alwaysに設定します。

私は、彼らが望むとき、人々はそれが何を意味してメイク分岐トラック上流の枝に、このスイッチに

を関連付けることがわかりますか?それは私か、このスイッチの説明は混乱していますか?私が用語upstreamを使用するとき、私は変更をプッシュできる別のリモートのrepo(fork)を参照します。

リモートブランチの追跡を開始するとどうなりますか?それはどのようにローカルに現れますか?

答えて

4
枝の

上流分岐、またはリモートブランチは、単にgit pullgit pushコマンドを使用しているときに、デフォルトでと相互作用するブランチで追跡しました。

あなたにブランチを引っ張ったとき、あなたが明示的にそれを行うことができます。

git pull origin the_branch 

それは、リモートoriginは、あなたの現在のブランチにorigin/the_branchをマージ取得します。

あなたが常に同じブランチを引っ張って使用する場合は、上流分岐を設定することで、あなただけのgit pullを起動することができます。

git branch --set-upstream-to origin/the_branch 
git pull 

デフォルトでは、リモートのいずれかから新しい枝を開始すると、Gitが追加されますその上流分岐など:

git checkout -b origin/the_branch 
# Is equivalent to 
git branch --track the_branch origin/the_branch 
git checkout the_branch 

押し、それはほとんど同じことです。
git pushをパラメータなしで使用する場合、config push.defaultは、プッシュ先のデフォルトブランチを決定します。

値がupstreamの場合、アップストリームブランチにプッシュされます。
デフォルト値simpleの場合は、ローカルとアップストリームのブランチ名が同じの場合にのみ、同じを実行します。
他の設定可能性を確認するためにドキュメントを見てみましょう。


あなたは-vvスイッチを使用することにより、すべての支店の現在の上流の枝を見ることができます:

$ git branch -vv 
* my_branch  33f2d4c [origin/mybranch] a useful commit 
    master   3ed8e99 [origin/master] Merge 
    the_branch  dbbb8c0 [origin/the_branch] commit on the branch 

枝の上流分岐も@{upstream}参照して参照することができます。

$ git rev-parse --symbolic-full-name --abbrev-ref @{upstream} 
origin/the_branch 

プッシュブランチは、@{push}と同等です(これは、使用casの99%で@{upstream}と同じになります)。 ES):

$ git rev-parse --symbolic-full-name --abbrev-ref @{push} 
origin/the_branch 

@{upstream}@{push}の区別はあなたが三角形のワークフローを使用する場合のためです:あなたは、通常、リモート慣例upstreamによって呼び出された読み取り専用の「上流」プロジェクト(からプル)とにプッシュ書き込み可能なリポジトリ
これは、GitHubで使用されるフォークワークフローのケースです。
私はhere is the auto-translated versionについて、(フレンチ)ブログ記事を作成しました。

+0

'デフォルトでは、リモートから新しいブランチを起動すると、gitはそれをアップストリームブランチとして追加します:'。なぜなら、私があるブランチに入るたびに、ブランチ名を指定しなくても 'git pull 'でリフレッシュするからです。私がチェックアウトしたブランチからプル/プッシュすると、Gitはそのブランチをリモートから引き出すことを知っていました。 – sandalone

0

ローカルブランチを設定して、ローカルで行っている作業とリモートで起こっていることを関連付けるときに、リモートブランチを追跡するように設定します。

つまり、git pullまたはgit fetchを実行すると、gitはどこで変更を探すかを知っています。他の誰かがコミットをリモートブランチにプッシュして、git statusを実行すると、リモートの背後にあるコミットがあることがわかります。あるいは、あなたの地元でコミットしたことがあるならば、あなたは遠隔地に先んじてコミットしていると言います。 git status

出力例:

On branch develop 
Your branch is behind 'origin/develop' by 19 commits, and can be fast-forwarded. 
    (use "git pull" to update your local branch) 

あなたは常に彼らが何をしているかを認識するとまであなたの仕事を保つことができるよう、あなたは、同じ支店でより多くの人で作業する場合、これは便利です見ることができるように日付。

関連する問題