【Git】追跡ブランチを確認,変更する方法.
Githubからあるリポジトリをclone
したあと,ブランチ名を変更した.そしていくつかの変更をcommit
後に,push
した.
しかし,vscodeの機能にある,gitのリモートとの差を表すものが更新されなかった.
これはローカルの追跡ブランチが変わっていないために生じる問題のようだったので,この解決方法とそれに関係するコマンドをメモする.
環境
git --version
git version 2.30.1 (Apple Git-130)
sw_vers
ProductName: macOS
ProductVersion: 12.1
BuildVersion: 21C52
最初に結論
追跡ブランチを origin/main に変更する場合,以下のコマンドを実行すればよい.
git branch -u origin/main
流れ
きっかけ
Githubからリポジトリをclone
したのち,ブランチ名をmaster
からmain
に変更した.そしていくつかの変更をcommit
後に,push
した.
しかし,vscodeの機能にある,gitのリモートとの差を表すものが以下の画像の通り更新されなかった.
この機能が,拡張機能だったか,デフォルトでついている機能だったか覚えていない…
ちなみに,執筆時点でgit関係で入れている拡張機能は以下.
これには「追跡ブランチ」が関係していることを突き止め,解決した.
現在のブランチが追跡している追跡ブランチの確認
まず,
git checkout <branch name>
などで,確認したいブランチに移動する.
自分の場合は,
git branch -m main
を行なってmaster
ブランチをmain
ブランチにRenameした.
そのあと,確認したいブランチ上で以下のコマンドを実行.
git branch -vv
実行結果例は以下.
* main 09d86d4 [origin/master: ahead 4] Update README.
この通り,git branch -m main
ではローカルのブランチ名が変更されただけで,追跡ブランチの名前が変わっていないため4commit分遅れているよ,と言われている.
これがきっかけに示した画像に表示されている数である4と一致していたのでこれが原因である可能性が濃厚と考えた.
追跡ブランチの変更結果
したがって,結論に示した通り以下のコマンドを実行して,追跡ブランチを変更.
git branch -u origin/main
このコマンドを実行したあと,再度追跡ブランチの状況を確認すると,以下になった.
git branch -vv
* main 09d86d4 [origin/main] Update README.
このように遅れがなくなり,追跡ブランチも変更されたことが確認できる.
また,以下の通りリモートからの遅れがないよ,と表示が変更された.
コメント
たぶん,変更しなくても大きな問題はないのかもしれないが,push
したのかどうかを直感的に確認できる状態にしておくことはわかりやすくていいなと思った.
この概念を100%理解するためにはHEADブランチとかリモートブランチとか複雑?な概念を理解する必要があるので奥が深いなと思いつつ,とりあえずやり方を覚えようと思う.
今後mainでブランチが作成されるのが普通になっていったらあまり使わなくなるものかもしれないなとも考えた.
参考
- gitでローカルのブランチが追跡しているリモートブランチを確認する方法 - Qiita
- 【Git】追跡ブランチを変更 - Qiita
- masterからmainに変更する(githubのリモート&ローカルブランチ)branches - Qiita
- GitのHEAD位置の指定方法まとめ(HEAD~, HEAD^, @~, @^とは?) - Qiita
- 最初はここにある
git reflog
で確認していたが,git branch -vv
のほうが欲しい情報だけ得られたので使わなかったが,こういった確認方法もあるよという参考先.
- 最初はここにある