■ はじめに
最近ではGitを使ってソース資産のバージョン管理を行う現場が増えてきました。 しかしながらGitの場合、SVNなどと異なり操作にはコマンド操作が多く混乱しがちですよね。
今回は、Gitの基本的な使い方と、実際の現場でよく使うコマンドをまとめました。
この記事を読めば、最低限必要な操作は理解できるようになるはずです。
■ 目次
1. Gitとは
まず初めに、Gitとはバージョン管理システムです。
簡潔に説明するとファイルの変更履歴を管理できるツール。
プログラムのソースコードなどの資産を安全に管理するために使われます。
主な特徴
- 分散型: 各ユーザーがローカルリポジトリへcloneしてオフラインでも作業できる。
- ブランチ管理が強力: ブランチで分けられるため複数の作業を同時並行で進めやすい。
- 高速1 : 大量の変更にも素早く対応(プルやプッシュ、マージ)できる。
Gitは分散型のバージョン管理ツールですが、対になるものとして集中型バージョン管理システムがあり、
SVN2はこれに該当します。
ソースはGit、分散管理を行う必要のない設計書などはこちらを使用している現場が多い印象です。
2. 基本のGitコマンド
Gitを使うなら、最低限押さえておきたい基本コマンドはこちら!
2.1 リポジトリの初期化
新しいプロジェクトを始めるときには、まずリポジトリを作成します。
リポジトリとは、ファイルのバージョンを追跡するためのデータベースのことです。
git init
2.2 ファイルのステージング(追加)
ステージングとは、新規作成、編集、削除したファイルをコミットする前に「これをコミットしますよ」とGitに伝える段階です。
git add <ファイル名>
この場合はファイル名を単体で指定して変更をステージングエリアに追加します。
変更した複数ファイルやすべてを追加したいときはこちら。
この「.」は「現在のディレクトリ内のすべてのファイル」を意味します。
git add .
プロジェクト全体で複数のファイルを一気にコミットしたいときに便利です。
また、すべてのファイルをステージングに追加する場合にも使われます。
2.3 コミット(変更の確定)
追加した変更を「確定」するのがコミットです。
-m オプションを使うことで、コミットメッセージをインラインで指定できます。
git commit -m "コミットメッセージ"
他の開発者が後から変更を理解できるように何をしたのか簡単に書きましょう。
例:「バグ修正」「新機能追加」など
プロンプトによってはチケット番号や作業者の名前を記載するよう決まりがあったりもします。
2.4 状態確認
リポジトリの現在の状態を確認する際には git status コマンドを使います。
git status
このコマンドを実行すると、以下の情報を取得できます。
・ステージングされていない変更
・まだコミットされていないステージングされた変更
・追跡されていない新しいファイル
2.5 履歴確認
これまでに行ったコミットの履歴を確認するためには、git log コマンドを使います。
git log
コミットの履歴(日時、コミットID、コミットメッセージ)などを確認することができます。
3. 応用的なGitコマンド
ブランチ操作
複数人で開発するときに、作業ごとにブランチを切り分けて管理すると便利です。
3.1 ブランチの作成
新しい作業用ブランチを作成したいときは、次のコマンドを使います。
git branch <ブランチ名>
3.2 ブランチの切り替え
作ったブランチに切り替えたいときはこちら。
git checkout <ブランチ名>
「check out」は日本語ではは「出ていく」という意味がありますが、
gitでは「他のbranch」へ移動するといった意味になりますね。
最近のGitでは git switch コマンドも使えます。
git switch <ブランチ名>
上記の理由から「switch」の方がピンとくる方も多いかも。
3.3 ブランチのマージ
別のブランチで作業が終わったら、メインブランチに変更を統合します。
git merge <ブランチ名>
4. 実際に現場で使うGitコマンド
4.1 リモートリポジトリの追加・確認
リモートリポジトリを追加するには、以下のコマンドを使います。
git remote add origin <リポジトリURL>
リモートリポジトリとは、GitHubやGitLabなどにあるリポジトリのことです。
これをローカルリポジトリと連携させることで、リモートとローカルの間でコードをやり取りできるようになります。
origin はリモートリポジトリの名前で、デフォルトではよくこの名前が使われます。もちろん、任意の名前を付けることもできます。
<リポジトリURL> には、GitHubや他のリモートリポジトリサービスから取得したURLを指定します。
リモートリポジトリを追加したら、次のコマンドで正しく設定されているか確認します。
git remote -v
このコマンドで、リモートリポジトリの一覧と、それに対応するURLが表示されます。
4.2 プッシュ(リモートに反映)
git push origin <ブランチ名>
ローカルで行った変更をリモートリポジトリに反映するために使うのが git push です。
特定のブランチの変更をリモートにアップロードします。
git fetchを使用することもできますが、fetchはリモートからの変更をローカルにダウンロードするだけでマージは行いません。
origin は先ほど追加したリモートリポジトリの名前です
例えば、「main」というブランチをリモートに反映したい場合は git push origin main になります。
4.3 プル(リモートの変更を取り込む)
リモートリポジトリに他のメンバーがプッシュした変更を、ローカルに取り込む際に git pull を使います。
このコマンドは、リモートリポジトリから最新の変更を取得し、ローカルのブランチにマージします。
git pull
git pull は、実際には git fetch(リモートからの最新情報を取得)と git merge(その変更をローカルに統合)の2つのコマンドを組み合わせたものです。
4.4 クローン(リモートリポジトリのコピーを作成)
リモートリポジトリからローカルにプロジェクトをコピーしてきたいときには git clone を使います。
git clone <リポジトリURL>
<リポジトリURL> には、コピーしたいリモートリポジトリのURLを指定します。
このコマンドを実行すると、リポジトリ全体がローカルにコピーされ、ローカルのフォルダとして展開されます。
4.5 コンフリクトの解消
Gitの操作でしばしば起こるのがコンフリクト(衝突)です。
これは、異なる変更が同じファイルの同じ部分で行われた場合に発生します。
例えばAさんとBさんが同じ行を変更して、お互いがそれをマージしようとした際にコンフリクトが発生します。
まずはコンフリクトしたファイルを開き、手動で解消します。
変更差分のあるファイルは以下のように表示されます。
- console.log("Hello")
+ console.log("Hello World")
その後、コンフリクトを解消したファイルをステージングしてコミットします。
git add <解消したファイル>
git commit
git add で解消したファイルをステージングし、その後に git commit で確定します。
5. まとめ
Gitの基本的なコマンドを使いこなすことで、効率よく開発を進められます。
今回紹介したコマンドは、日常的に使うものばかりなので、まずは慣れることを目指してみてください。