💭

SourceTreeの追跡中チェックボックスが何を意味しているのか

に公開

この記事を書こうと思った経緯

SourceTreeのpushGUIの右に三段階のチェックボックスがあり、該当の欄には追跡中と書いてあるのですが、チェックボックスの状態が何を表すのかわからず、一日もやもやしていたので理解した内容をアウトプットするため。

結果から話すと

1. チェックが完全に入っている状態(白いチェックマーク):

  • そのブランチは完全に追跡設定されている
  • ッシュやプルを行うとき、引数なしでも自動的に対応するリモートブランチを特定できる
  • git branch -vv で対応するリモートブランチが表示される状態

2. チェックが部分的に入っている状態(グレーのチェックマーク):

  • 部分的な追跡関係がある状態
  • 通常、新しいローカルブランチをプッシュする際に「上流ブランチとして設定」オプションを選択した場合など
  • まだ完全な追跡関係が確立されていない場合もこの状態になることがある

3. チェックが入っていない状態:

  • そのブランチには追跡関係が設定されていない
  • プッシュやプルを行う際に毎回明示的にリモートとブランチを指定する必要がある
  • 完全にローカルのブランチである場合や、追跡関係が解除された場合

完全な追跡関係完全な追跡関係とは

上流ブランチとは

まず、上流ブランチ(upstream)という概念があるからと言って下流(downstream)もあるわけではない。ということを念頭に置いて話します。あと上流という言葉に惑わされやすいので注意。

Gitの「上流(upstream)」という概念は特定の意味を持ちます:

  • ローカルブランチが明示的に追跡している特定のリモートブランチを指す
  • git branch -u や git push -u などで設定される関係

ローカルのfeatureブランチで作業しているとき:リモートの対応するブランチ(origin/feature)が「上流」

ローカルfeatureブランチから見た場合:

  • リモートfeatureブランチ(origin/feature):「上流」になり得る(設定されていれば)
  • 注意:リモートmainブランチ(origin/main):「上流」でも「下流」でもない、単に別のブランチ

もう一度解説

まとめ

Discussion