dackdive's blog

新米webエンジニアによる技術ブログ。JavaScript(React), Salesforce, Python など

[git]ローカルからpushした時に自動的に追跡ブランチにする

いきなり結論

ローカルで新しく作成したブランチを push するときに -u オプションをつける。

# ブランチを切る
$ git checkout -b new_branch

# (new_branch内で作業・コミット)

# -u オプションを付けて実行する
$ git push -u origin new_branch

経緯など

masterからブランチ切って作業してそれをリモートリポジトリにpushする、という作業の時に
毎回こういった操作をやってました。

# ブランチの作成
$ git checkout -b new_branch
Switched to a new branch 'new_branch'

# ---(ローカルブランチで作業)---

# pushしてリモートブランチを作成
$ git push origin new_branch
Total 0 (delta 0), reused 0 (delta 0)
To git@github.com:XXXXX/XXXXX.git
 * [new branch]      new_branch -> new_branch

# 他の人が更新するかもしれないので、追跡ブランチに設定しておく
$ git branch --set-upstream-to origin/new_branch
Branch new_branch set up to track remote branch new_branch from origin.

--set-upstream-toを毎回打つのが面倒だなと。

ところが、もっと簡単な方法がありました。

git - Why do I need to do `--set-upstream` all the time? - Stack Overflow

これによると、push時に-uオプションをつけると自動的に追跡ブランチになるそうです。

# 再度masterからブランチを切る
$ git checkout -b new_branch2
Switched to a new branch 'new_branch2'

# -u オプションを付けて実行する
$ git push -u origin new_branch2
Total 0 (delta 0), reused 0 (delta 0)
To git@github.com:XXXXX/XXXXX.git
 * [new branch]      new_branch2 -> new_branch2
Branch new_branch2 set up to track remote branch new_branch2 from origin.

または、--set-upstream-to自体にも-uという省略形があるようなので
push時に忘れてしまってもこれでOK

# これはgit branch --set-upstream-to origin/new_branchと等価
git branch -u origin/new_branch

おまけ

サンプルで使ったブランチはローカル、リモートともに削除しましょう。

# ローカルブランチの削除
# ※削除対象のブランチにいる状態では実行できない
$ git branch -D new_branch

# リモートブランチの削除
$ git push origin :new_branch