Linuxコマンドの基本:Git:2人以上での作業

 ここまでは1人でGitを使って履歴管理を行ってきましたが、現実的な開発現場では複数ユーザで共同作業を行うケースが多く、Gitはそうしたシナリオにも最適なツールです。

 ここでは、複数人で開発を行う際のリポジトリ構成や、変更履歴の共有方法、コマンドの使い方について説明します。


なぜ複数人での作業が重要なのか

 ソフトウェア開発が大規模化するにつれ、1人では賄えない作業量や専門知識が必要になります。複数人で並行して機能追加や不具合修正を行う場合、各々が自分の作業成果をどう共有し、どう取り込み合うかが課題となります。

 Gitは分散型バージョン管理システムであり、各ユーザーが自分専用のリポジトリを持ち、そのリポジトリ間で自由に変更履歴をプッシュ(git push)やフェッチ(git fetch)/マージ(git merge)、プル(git pull)できる仕組みを提供します。これにより、複数人が同時並行で作業しても履歴が衝突しにくく、履歴を安全かつ効率的に共有できるようになります。


複数ユーザでの開発におけるリポジトリ構成

 複数人での開発では、「共有リポジトリ」と呼ばれるリポジトリを中心に、各ユーザーが自分のリポジトリを用意します。

  • 共有リポジトリ:全員がアクセスできる共通のベースとなるリポジトリ
  • ユーザ用リポジトリ:各ユーザーが個別に作業を進めるためのリポジトリ

 各ユーザーは自分のリポジトリでコミットを行い、完成した変更点をgit pushで共有リポジトリに送り込みます。他のユーザーはgit fetchgit pullを使って共有リポジトリから変更を取り込み、自分の環境に最新の状態を反映する流れです。

 この構成は、1人でバックアップ用リポジトリを運用していた場合と似ていますが、今度は複数ユーザが同じ共有リポジトリを利用する点が異なります。


基本的なコマンドと概念

ここでは、2人以上での作業で重要になる基本的なGitコマンドと概念を紹介します。

コマンド・概念役割・説明
git pushローカルリポジトリの変更履歴を、指定したリモートリポジトリへ送信します。共有リポジトリに反映させる時に使います。
git fetchリモートリポジトリの最新の変更履歴を取得(ダウンロード)します。ただし、ローカルブランチにはまだ反映されません。
git mergegit fetchで取得した変更(リモート追跡ブランチ上)をローカルブランチに統合します。
git pullgit fetchgit mergeを組み合わせたショートカットコマンド。リモートから最新変更を取り込み、ローカルに反映します。

リモート追跡ブランチとは

 git fetchを行うと、取得したリモートリポジトリのブランチ情報は一時的に「リモート追跡ブランチ」として保存されます。リモート追跡ブランチはorigin/masterのようなリモート名/ブランチ名で表され、git branch -rで確認できます。

ローカルブランチには直接影響しないため、git mergeで自分のローカルブランチに取り込む操作が必要です。


共同作業のワークフロー

1.ユーザー1による修正とコミット

ユーザー1はgit addgit commitでローカルリポジトリの履歴を進めます。

$ git add logview.sh
$ git commit -m "コメントを追加"

2.共有リポジトリへのプッシュ

完成した変更をgit pushで共有リポジトリへ送ります。

$ git push origin master

3.ユーザー2が最新変更を取得

 ユーザ2ーはgit fetchで共有リポジトリの更新を取得し、git mergeまたはgit pullで自分のローカルブランチに取り込みます。

$ git fetch origin
$ git merge origin/master

または

$ git pull origin master

 これにより、ユーザー1が行った変更が共有リポジトリを経由して、ユーザー2のローカルリポジトリへ反映されます。


注意点と運用のコツ

  • 適度な更新頻度
     各ユーザーは適度な頻度(1日1回など)でgit fetch/git pullを行い、ローカルリポジトリを最新化することで、コンフリクト(衝突)を早期に発見できます。
  • 権限管理と環境構築
     共有リポジトリが存在するサーバやパスには、全員が適切な権限でアクセスできるよう設定が必要です。本格的な共同作業では、HTTPやSSH経由でリポジトリにアクセスする仕組みを整えます。
  • リモート名・ブランチ名の扱い
     originmasterといった名称はデフォルト・慣習的なものです。組織やチームの方針に合わせて命名を変えたり、ブランチ構成を整えたりしましょう。

まとめ

Git:2人以上での作業」では、複数ユーザーが共有リポジトリを介して履歴を同期・更新する方法を解説しました。

  • 各ユーザーは独自のリポジトリで作業・コミット
  • git pushで共有リポジトリへ変更を送信
  • 他のユーザーはgit fetch/git pullでその変更を取得・反映
  • 分散型バージョン管理の利点を生かし、並行開発が円滑に進行

 これらの手順を踏むことで、チーム開発がスムーズに行え、全員が最新の変更履歴を共有しながら安心して作業を進めることが可能となります。