ProGitの本は持っている非常に良い説明を:
ブランチの追跡
リモートブランチからローカルブランチをチェックアウトすると、いわゆるトラッキングブランチが自動的に作成されます。トラッキングブランチは、リモートブランチと直接的な関係を持つローカルブランチです。トラッキングブランチを使用してと入力するとgit push
、Gitはプッシュ先のサーバーとブランチを自動的に認識します。また、git pull
これらのブランチのいずれかで実行すると、すべてのリモート参照がフェッチされ、対応するリモートブランチに自動的にマージされます。
リポジトリを複製すると、通常、オリジン/マスターを追跡するマスターブランチが自動的に作成されます。それが理由でgit push
ありgit pull
、他の引数なしでそのまま使用できます。ただし、必要に応じて他のトラッキングブランチを設定できます。つまり、起点でブランチを追跡せず、マスターブランチを追跡しないブランチです。単純なケースは、今見た例で、を実行していgit checkout -b [branch] [remotename]/[branch]
ます。Gitバージョン1.6.2以降を使用している場合は、--track
省略形を使用することもできます。
$ git checkout --track origin/serverfix
Branch serverfix set up to track remote branch refs/remotes/origin/serverfix.
Switched to a new branch "serverfix"
リモートブランチとは異なる名前でローカルブランチを設定するには、ローカルブランチ名が異なる最初のバージョンを簡単に使用できます。
$ git checkout -b sf origin/serverfix
Branch sf set up to track remote branch refs/remotes/origin/serverfix.
Switched to a new branch "sf"
これで、ローカルブランチsf
は自動的ににプッシュしたり、プルしたりしorigin/serverfix
ます。
ボーナス:追加git status
情報
トラッキングブランチを使用すると、トラッキングブランチのgit status
後方にどれだけいるかが表示されます-変更をまだプッシュしていないことを思い出させるのに役立ちます!次のようになります。
$ git status
On branch master
Your branch is ahead of 'origin/master' by 1 commit.
(use "git push" to publish your local commits)
または
$ git status
On branch dev
Your branch and 'origin/dev' have diverged,
and have 3 and 1 different commits each, respectively.
(use "git pull" to merge the remote branch into yours)
--track
オプションを使用して、これらのリモート追跡ブランチの1つを上流として設定した(ローカル)ブランチを作成できます。用語は2006年から2019年の間に多少進化したため、異なる人々はこれらの単語のそれぞれによって異なる何かを意味する場合があります。