Gitのupstream設定とは?リモートブランチとの紐付けを初心者向けに解説
こんにちは、とまだです。
「git pushするたびに長いコマンドを打つのが面倒」 「リモートブランチとローカルブランチの関係がよくわからない」
そんな悩みを抱えていませんか?
今回は現役のエンジニア、そして元プログラミングスクール講師としての経験から、Gitのupstream設定について解説します。
この記事を読めば、コマンドがシンプルになり、ブランチ管理の悩みが解消されるはずです。
upstreamとは?身近なもので理解しよう
Gitのupstreamは、リモコンとテレビの関係に似ています。
リモコンのボタンを押すと、特定のテレビが反応しますよね。 同じように、ローカルブランチ(リモコン)とリモートブランチ(テレビ)を紐付けるのがupstream設定です。
この設定をしておくと、次のようなメリットがあります。
まず、git push
と打つだけで正しいリモートブランチに送信できます。
また、git pull
でも適切なブランチから取得できます。
さらに、どのブランチと連携しているかが明確になります。
なぜupstream設定が必要なのか
複数人で開発していると、ブランチが増えていきます。
たとえば、以下のような状況を想像してみてください。
開発用のdevelopブランチ。 機能追加用のfeatureブランチ。 バグ修正用のfixブランチ。
これらのブランチを扱うとき、毎回git push origin feature/login
のように打つのは大変です。
しかも、間違えて別のブランチにpushしてしまうリスクもあります。
そこで、upstream設定の出番です。 一度設定すれば、シンプルなコマンドで済むようになります。
基本的な設定方法
新しいブランチを作成してpushするときの設定方法を見てみましょう。
git push -u origin main
この-u
オプションがupstream設定のポイントです。
--set-upstream
の省略形で、「このブランチとリモートブランチを紐付けて」という意味になります。
すでにあるブランチに設定する場合
既存のブランチにupstreamを設定することもできます。
git branch --set-upstream-to=origin/develop develop
このコマンドで、ローカルのdevelopブランチとリモートのorigin/developが紐付きます。
今後はgit push
やgit pull
だけで操作できるようになります。
設定の確認方法
upstreamが正しく設定されているか確認してみましょう。
git branch -vv
このコマンドを実行すると、各ブランチの追跡状況が表示されます。 追跡先が設定されていないブランチは、その欄が空になっています。
確認することで、どのブランチがどこと繋がっているかが一目でわかります。
よくあるトラブルと対処法
pushが拒否される場合
「Updates were rejected」というエラーが出ることがあります。
これは、リモートに自分が持っていない変更があるという意味です。
対処法は以下の通りです。
まず、リモートの最新状態を取得します。
git fetch
次に、変更を取り込みます。
git merge
これで、リモートとローカルの状態が揃います。 その後、改めてpushすれば成功するはずです。
コンフリクトが発生した場合
同じファイルの同じ箇所を複数人が編集すると、コンフリクトが起きます。
ファイルを開くと、以下のような記号が表示されます。
<<<<<<< HEAD
自分の変更
=======
他の人の変更
>>>>>>> origin/main
この場合は、どちらの変更を採用するか決めて、記号を削除します。
その後、git add
とgit commit
で解決完了です。
実務での活用例
機能開発のフロー
新機能を開発するときの流れを見てみましょう。
まず、新しいブランチを作成します。
git checkout -b feature/user-profile
開発が終わったら、upstreamを設定してpushします。
git push -u origin feature/user-profile
これで、次回からはgit push
だけで済みます。
チーム開発での使い方
チームで開発する場合、ブランチ名のルールを決めておくと便利です。
たとえば、以下のようなルールです。
機能追加はfeature/機能名
。
バグ修正はfix/バグ内容
。
リリース準備はrelease/バージョン番号
。
ルールがあると、誰がどんな作業をしているかがわかりやすくなります。
upstream設定を解除する方法
不要になったupstream設定は解除できます。
git branch --unset-upstream
このコマンドで、現在のブランチのupstream設定が削除されます。 特定のブランチを指定する場合は、ブランチ名を追加します。
git branch --unset-upstream feature/old-feature
まとめ
Gitのupstream設定について解説しました。
リモコンとテレビの関係のように、ローカルブランチとリモートブランチを紐付ける機能です。
設定しておくと、以下のメリットがあります。
コマンドがシンプルになる。 誤操作を防げる。 ブランチ管理が明確になる。
最初は設定が面倒に感じるかもしれません。 でも、一度設定すれば日々の作業が格段に楽になります。
ぜひ、今日からupstream設定を活用してみてください。
著者について

とまだ
フルスタックエンジニア
Learning Next の創設者。Ruby on Rails と React を中心に、プログラミング教育に情熱を注いでいます。初心者が楽しく学べる環境作りを目指しています。
著者の詳細を見る →