【Git】更新の基本から実務で役立つ手順までわかりやすく解説

Web開発

はじめに

Gitを使ったソースコードやファイルの管理では、更新という操作がよく登場します。 複数人で作業するときや、リモートリポジトリ(GitHubやGitLabなど)とのやり取りをするときに欠かせない手順です。

しかし初心者の方は、そもそもどのコマンドで何をするのかがイメージしづらいかもしれません。 たとえば「Gitリポジトリを更新するって具体的にどういう手順を踏むの?」と疑問を持つこともあるでしょう。

ここでは、ローカルリポジトリとリモートリポジトリの更新の流れを中心に、実務で役立つ具体例を交えながらわかりやすく解説します。 初心者の方にも理解できるよう、専門用語は噛み砕いて説明しますので参考にしてみてください。

この記事を読むとわかること

  • Gitにおける更新の概念と基本のコマンド
  • ローカルリポジトリを最新の状態に保つための手順
  • リモートリポジトリに変更を反映する方法
  • 実務で遭遇しやすい更新時のトラブル対処法
  • 複数人作業で使えるブランチ運用のポイント

Gitの更新とは何か

Gitでいう「更新」は、大きく分けて次の2つの操作を指すことが多いです。

1. ローカルリポジトリを最新化する

リモートリポジトリの変更を手元のローカルリポジトリに取り込むことを指します。

2. ローカルリポジトリでの変更をリモートへ反映する

ローカルで編集した内容をリモートリポジトリに送ることを指します。

特に最初のほう、**「自分の手元のファイルをリモートの最新状態にする」**操作がわかりづらいかもしれません。 ここでは、それぞれの処理で使う代表的なGitコマンドや手順を見ていきましょう。

ローカルリポジトリを更新する方法

ローカルリポジトリを更新するというのは、チームメンバーなどがリモートリポジトリに上げた変更を手元に取り込む作業です。 代表的な方法としてはgit pullと、 git fetch + git merge (またはrebase) があります。

git pull を使った更新

最もシンプルなやり方が、git pullコマンドです。 このコマンドだけでリモートリポジトリから最新のコミットを取得し、ローカルに反映します。

git pull origin main
  • origin は通常、リモートリポジトリのデフォルト名
  • main はメインブランチ名

もしブランチ名が develop など別の名前なら、それに合わせて指定します。 git pull は内部的に fetch + merge または fetch + rebase を行いますが、デフォルトでは merge と組み合わせることが多いです。

git fetch と git merge を分けて使う

もう少し細かく管理したい方は、更新を2段階に分ける方法を採用することがあります。

1. git fetch

リモートリポジトリの最新コミット情報を取得する(ファイルの内容をダウンロードする)

2. git merge(または git rebase)

ローカルのブランチに取り込む

git fetch

git fetch origin main

fetch はあくまでダウンロードするだけで、自分のローカルブランチには反映されません。
どのような変更がリモートに入ったのかを確認したいときに便利です。

git merge

git merge origin/main

origin/main は、fetch で取得したリモートのメインブランチを指しています。 これをローカルの現在のブランチに統合(merge)することで、手元が最新状態になります。

git rebase を使う場合

merge と同じように、リモート側の変更をローカルに取り込む手段として rebase を用いることもあります。 rebase を使うと、コミット履歴をきれいに保ちやすい反面、操作に慣れていないと**「どの履歴がどこにいった?」**と混乱しやすいです。

初心者の方はまず merge を使いながら、慣れてきたら rebase も検討するといいでしょう。

リモートリポジトリへ更新を反映する方法

今度はローカルで編集を加えた後、その変更をリモートリポジトリに送る手順を見ていきましょう。

1. git add

変更したファイルをステージに登録する

2. git commit

コミットメッセージを付けてローカルリポジトリに履歴を作成する

3. git push

リモートリポジトリに送る

具体的には次のような流れです。

git add .
git commit -m "更新内容の説明"
git push origin main

git push をしたとき、もしチームメンバーの変更が先に入っていて自分のブランチが古い場合は、エラーが出ることがあります。 このときは先にローカルを最新状態にしてから再度pushするのが基本的なやり方です。

リモートリポジトリへ変更を送るときは、誤ってプライベートな情報まで含まれていないかを確認しましょう。

実務でよくある更新のシーン

実務では、ただ git pullgit push を使うだけでなく、状況に合わせてブランチを切り替えたり、コンフリクト(衝突)を解決したりする必要があります。 ここではよくあるシーンをいくつか挙げてみます。

バグ修正ブランチでの更新

「main ブランチからバグ修正用のブランチを作ったけれど、main ブランチ自体が変更されてしまった」という状況が起こることがあります。 この場合、ブランチを切り替えて git pull した後、バグ修正ブランチで mergerebase をする、といった工程が必要です。

バグ修正ブランチでの作業途中にmainブランチが先に更新されるケースはよくあります。 早め早めにmainの変更を取り込むことで、後から大きなコンフリクトに悩まされずに済むでしょう。

リリース直前の仕上げ

プロジェクトのリリース直前になると、複数のブランチが同時進行で作業されていることもあります。 最新の変更をまとめてテストしたい場合、リリース用のブランチに全員の作業ブランチをマージしていきます。

このとき、順番にブランチをマージしていくとコンフリクトが起きにくいです。 誰がどのブランチを先にマージすべきか、あらかじめチームで話し合ってルールを決めておくことも多いです。

コンフリクト発生時の解消方法

コンフリクトとは、同じ箇所を別の内容で変更していた場合に起こります。 mergerebase をするときに検知され、ユーザーが手動で解決しないと先に進めない仕組みです。

  1. どのファイルで衝突が起きているかを確認する
  2. ファイルを開き、<<<<<<< HEAD のような記述を探す
  3. 衝突している部分を自分のほうで使いたい行、リモートのほうで使いたい行などに分けて整理する
  4. 不要なマーカー(<<<<<<< ======= >>>>>>>)を削除する
  5. 保存してコミットする

たとえば次のような衝突箇所が示されることがあります。

<<<<<<< HEAD
console.log("ローカルの変更");
=======
console.log("リモート側の変更");
>>>>>>> origin/main

ここでどちらの内容を残すかを決め、最終的な記述を1つにまとめます。 まとめ終わったら、再度 git addgit commit でコンフリクト解消した履歴を作成します。

複数ファイルでコンフリクトが発生した場合、すべて解決しないと次の操作に進めません。 急いでいるときほど落ち着いて1つずつ整理しましょう。

ブランチ運用との関係

更新コマンドの使いこなしと同時に、ブランチの運用ルールが定まっているかどうかが実務では重要です。 たとえば以下のようなブランチモデルを採用しているケースが多いでしょう。

mainブランチ

本番リリース用のブランチ(常に安定している状態が望ましい)

developブランチ

開発のベースとなるブランチ

featureブランチ

1つの機能やバグ修正など、個別作業用のブランチ

このように役割がはっきり分かれていると、更新のタイミングも明確に管理できます。 featureブランチのコミットは、定期的にdevelopブランチへマージしていくことで、全体の変更を同期させやすくなります。

実務で押さえておきたいポイント

更新操作がスムーズに進められると、プロジェクトの品質が保たれたり、作業効率が上がったりします。 ここでは、覚えておくと役立つポイントをいくつかピックアップします。

定期的にリモートを確認する

チームメンバーが頻繁にコミットしている場合は、こまめに git pullgit fetch をする習慣をつけるとよいでしょう。 溜め込みすぎると、大きな衝突が出たときの解消が大変です。

コミットの単位を小さくする

更新の衝突を減らすために、1つのコミットを小さくまとめるのも効果的です。 「ファイルを一つ編集したらコミットする」「ある程度完成したらコミットする」など、あらかじめ方針を決めておくことが大事です。

コードレビューのルールを決める

リモートへ更新を反映するときに、コードレビューを必ず通すといったルールを定めている現場も多いです。 レビューを行う前にmainブランチやdevelopブランチを最新化しておくと、コンフリクトが発生しづらくなります。

よく使うGit更新コマンドの一覧

まとめとして、よく使われる更新系のコマンドを一覧にしてみます。

コマンド役割
git pullリモートリポジトリから最新の変更を取得し、ローカルに反映
git fetchリモートリポジトリの最新情報を取得(ローカルには反映しない)
git mergeローカルブランチに別のブランチや変更を取り込む
git rebaseコミットの履歴を並び替えて取り込む(コミット履歴がきれいになる)
git addステージにファイルを追加
git commit新たなコミット(履歴)を作成
git pushローカルの変更をリモートリポジトリに送信
git stash作業中の変更を一時的に退避

git stash は、更新作業途中でエラーが出たときや、他のブランチへ素早く切り替えたいときに重宝します。 慣れてきたら、このコマンドも活用してみてください。

まとめ

ここまで、Gitにおける更新作業の流れを一通り解説しました。 特に初心者の方には「コマンドがたくさんあって紛らわしい」と感じるかもしれませんが、最初は git pullgit push の基本形をしっかり押さえておくと良いでしょう。

  • ローカルリポジトリを最新状態にするには git pullgit fetch + git merge
  • リモートに反映するには git push
  • コンフリクトが起きたら該当箇所を手動で修正してコミット
  • チーム開発ではブランチ運用やコードレビューなどのルールと組み合わせて活用

これらの知識を活かして、プロジェクトをスムーズに進めてみてください。

Gitをマスターしよう

この記事で学んだGitの知識をさらに伸ばしませんか?
Udemyには、現場ですぐ使えるスキルを身につけられる実践的な講座が揃っています。