Help us understand the problem. What is going on with this article?

Gitのリモート追跡ブランチ・追跡ブランチ・上流ブランチ

More than 1 year has passed since last update.

この投稿は、リモート追跡ブランチ・追跡ブランチ・上流ブランチのまとめです:laughing:
Gitのバージョンは、2.21.0

何が違うのか?

ローカルブランチ

ローカルブランチとは、ローカルリポジトリにあるブランチ

ローカルブランチの確認
$ git branch
* develop
  feature/xx1
  master

# ファイルで確認
$ tree .git/refs/heads/
.git/refs/heads/
├── develop
├── feature
│   └── xx1
└── master

リモートブランチ、リモート追跡ブランチ

  • リモートブランチとは、リモートリポジトリにあるブランチ
  • リモート追跡ブランチとは、前回fetch(やpull)をした時点でのリモートブランチを参照するブランチ。ローカルにある。

もっと詳しく

  • リモート追跡ブランチ名は、origin/developのように{remote}/{branch}となる
  • fetch(やpull)をすると自動的に更新される
  • リモート追跡ブランチを「派生元」として、ローカルブランチを作れる:smiley:
  • リモート追跡ブランチは、checkoutしない(detached HEADが起きるかも:laughing:
リモートブランチの確認
$ git branch -r
  origin/HEAD -> origin/master
  origin/develop
  origin/feature/xx1
  origin/master

# ファイルで確認(リモートリポジトリ=origin)
$ tree .git/refs/remotes/
.git/refs/remotes/
└── origin
    ├── HEAD
    ├── develop
    ├── feature
    │   └── xx1
    └── master

上流ブランチ、追跡ブランチ

  • 上流ブランチが設定されたローカルブランチは、追跡ブランチと呼ばれる
  • 追跡ブランチの「追跡先」が上流ブランチ
  • リモート追跡ブランチからローカルブランチを作ると、自動的に上流ブランチが設定。
    • リモート追跡ブランチ = 上流ブランチローカルブランチ = 追跡ブランチとなる
    • この動作は.git/configで変えられる1
  • 上流ブランチは、リモート追跡ブランチやローカルブランチを指定できる。追跡ブランチ ≠ リモート追跡ブランチとなる。

例えば、いまfeature/xx1をcheckoutしているとすると

上流ブランチの場合
# 上流ブランチ = ローカルブランチ
$ git branch --set-upstream-to=develop
Branch 'feature/xx1' set up to track local branch 'develop'.

# 上流ブランチ = リモート追跡ブランチ
$ git branch --set-upstream-to=origin/develop
Branch 'feature/xx1' set up to track remote branch 'develop' from 'origin'.

なぜこんなことが...

追跡ブランチ、上流ブランチがあると、git pull, git push といったコマンドを引数なしで実行可!初心者に優しくて便利&うれしい:laughing:
Gitも進化してるんだね!2

追伸
Gitって、バージョン管理システムなのに、バージョンって言葉が使われない気がする。なぜ??セマンティックバージョニングのせいなのかな。
Git - git-rev-parse Documentation


  1. Git - git-config Documentation 

  2. バージョンによって動作が違う。push.defaultの挙動が、バージョン2.xからmatchingsimpleなど。とうとう Git 2.0 が現実のものに。便利な機能満載 | Atlassian Blogs。各バージョンでの差異は、RelNotes\Documentation - git.git - The core git plumbing 

shinya_nakashima
北海道の建設コンサルにて、DXを推進する部署で企画、技術フィジビリティーを担当しています。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away