はじめに
ソフトウェア開発において、コードの管理は非常に重要です。チームでの開発では、複数の開発者が同じプロジェクトに関わり、コードの変更が頻繁に行われます。そんな中、変更履歴の追跡や、異なるバージョン間の統合をスムーズに行うためのツールが必要です。そこで登場するのが「Git」です。
Gitは、オープンソースの分散型バージョン管理システムで、効率的なコード管理を可能にします。しかし、最初は多くのコマンドや概念に圧倒されるかもしれません。本記事では、Gitの基本的な使い方を分かりやすく説明し、さらに一つのプロジェクトで複数のリモートリポジトリを管理する方法についても詳しく解説します。これを読めば、Gitの基本操作がスムーズにできるようになり、複雑なプロジェクトでも効率的に管理できるようになるでしょう。
基本的なGitの流れ
1.リポジトリのクローン (clone):
git clone <リポジトリURL>
リモートリポジトリのコピーをローカルマシンに作成します。
クローン(clone)とは、Gitリポジトリの完全なコピーを別の場所に作成することを指します。リモートリポジトリの内容を自分のローカルマシンにダウンロードして、全く同じ状態のリポジトリをローカルで使えるようにする操作です。
インターネット上にあるGitのデータベースのことです。もっと簡単に言うと、プロジェクトのコードやファイルの履歴を保存しておくオンラインの場所(ストレージ)です。
具体的な用途:
コードの共有:みんなが自分のパソコンからリモートリポジトリにアクセスして、最新のコードを見たり、自分の変更を追加したりできます。
バックアップ:リモートリポジトリに保存することで、パソコンが壊れてもコードが失われません。
共同作業:複数人で同じプロジェクトを開発するとき、リモートリポジトリを使って変更を管理しやすくなります。
ローカルマシンとは、自分が普段使っているパソコンのことです。簡単に言うと、あなたの手元にあるPCがローカルマシンです。
2.ブランチの確認 (branch):
git branch # 現在のブランチを確認
git branch <ブランチ名> # 新しいブランチを作成
現在のブランチを確認したり、新しいブランチを作成したりできます。
ブランチとは、Gitでのプロジェクト開発において、コードの「枝分かれ」を表すものです。具体的には、メインのコード(通常は「main」や「master」ブランチ)から独立したコピーを作り(≒ブランチ)、そこで自由に作業を行うことができます。
p.s.ブランチの作成はクローンしたリポジトリのフォルダ内で行います。リポジトリをクローンしたフォルダ(プロジェクトフォルダ)に移動してからブランチ操作を実行するのが一般的です。
3.ブランチの切り替え (checkout):
git checkout <ブランチ名>
作業するブランチを切り替えたりもします。
4.変更をステージング (add):
git add <ファイル名> # 特定のファイルを追加
git add . # すべての変更を追加
ファイルの変更をステージングエリアに追加します。これは次のコミットに含めるための準備です。
ステージングエリア(またはインデックス)とは、Gitでコミットする前に変更を一時的に置いておく場所のことです。簡単に言うと、ステージングエリアは「次にコミットする変更のリスト」を作る場所です。
ローカルリポジトリ(自分のPC上)に変更を記録すること。
そして、このローカルリポジトリの変更をリモートリポジトリに反映させることをプッシュと言います。
5.変更をコミット (commit):
git commit -m "コミットメッセージ" #コミットメッセージを付けて変更を保存
ステージングエリアにある変更をリポジトリに保存します。
6.変更をリモートリポジトリにプッシュ (push):
git push origin <ブランチ名>
ローカルリポジトリの変更をリモートリポジトリに送信します。
実務での流れ
では、ここまでで紹介したコマンドを、実際の実務にそって具体的に流れを把握していきましょう!
1.リポジトリをクローン:
git clone https://github.com/username/repo.git
cd repo
2.新しいブランチを作成して切り替え:
git branch new-feature #新しいブランチを作成
git checkout new-feature #new-featureブランチに切り替え
3.編集したファイルをステージング:
git add edited-file.txt
4.変更をコミット:
git commit -m "新しい機能を追加"
5.リモートリポジトリから最新の変更を取得:
git pull origin main
Gitでコミットの後にプルを行う理由は、リモートリポジトリとローカルリポジトリの内容を同期させるためです。プルをすることで、他の開発者がリモートリポジトリにプッシュした変更を自分のローカルリポジトリに取り込むことができます。これにより、共同作業における競合や整合性の問題を避けることができます。
p.s.競合が発生すると、Gitはそれを通知し、競合部分を手動で解決する必要があります。
Gitにおける競合(コンフリクト)とは、同じファイルの同じ部分が異なる方法で変更された場合に発生する問題です。競合が発生すると、Gitはどの変更を適用するべきかを自動的に判断できないため、開発者が手動で解決する必要があります。
6.競合がないか確認し、変更をプッシュ:
git push origin new-feature
この一連の流れで、リモートリポジトリとの同期を保ちつつ、自分の変更を他の開発者と共有することができます。Gitの使い方に慣れると、複雑なプロジェクトでも効率的に管理することができるようになります。
おまけ:リポジトリの変更
Gitリポジトリは通常、フォルダごとに1つしか作成できません。そのため、もし別のリポジトリを作成したい場合には、「削除して新たに作る」という方法があります。
git remote remove リモートネーム
一般的にリモートネームには、originやmaster、mainなどが使われます。
おまけ:既にあるリポジトリに追加する
git remote add origin リモートリポジトリurl
git branch -M main
git push -u origin main
まとめ
Gitを使用することで、効率的にコードのバージョン管理を行うことができます。特に複数のリモートリポジトリを設定することで、異なるリポジトリ間での同期やバックアップを柔軟に行うことができます。これらの基本的なコマンドをマスターして、より効果的にGitを活用していきましょう。