サイトアイコン ITC Media

【必読】Gitコマンド入門|基礎から応用まで実例付きで解説

(最終更新月:2023年4月)

✔このような方へ向けて書かれた記事となります

「Gitコマンドについて知りたい」

「Gitコマンドって何ができるのだろうか?」

「Gitコマンドの実例を見せてほしい」

✔当記事を通じてお伝えすること

当記事では、Gitコマンドの基本はもちろん、すぐに使いこなせるよう実例付きでさまざまな場面別で使えるコマンドをご紹介します。

ぜひ最後までご覧ください。

基本的なGitコマンド

早速ですが、Gitで何ができるのか?そのコマンドから見ていきましょう

Gitの基本的なコマンドは以下のとおり。

git init:リポジトリの初期化

git init

新しいGitリポジトリを作成するために使用されます。

コマンドを実行すると、カレントディレクトリに.gitディレクトリが作成され、リポジトリの設定や履歴情報が格納されます。

$ ls .git
HEAD  branches  config  description  hooks  info  objects  refs

git clone:リポジトリの複製

git clone

コマンドは、既存のリモートリポジトリをローカルに複製するために使用されます。

これにより、他の開発者が作成したプロジェクトを手元に持ってくることができます。

git clone <レポジトリのURL>

git add:ファイルの追跡準備

git add

変更したファイルをステージングエリアに追加し、次のコミットに含める準備をするために使用されます。

ステージングエリアとは、実際のGit上リポジトリにコミットする前の一時的な領域のこと。

何をコミットするかを選択したり、コミットされるものが何なのかを確認するために設けられています。

ステージングエリアには、ファイルやディレクトリを指定して追加することができます。

「.」(ドット)を使用すれば、カレントディレクトリ以下のすべての変更を一度にステージングエリアに追加することができます。

git add .

git status:変更の確認

git status

リポジトリの現在の状態を確認するために使用されます。

このコマンドにより、以下の確認ができるのが特徴です。

git commit:変更の保存

git commit

ステージングエリアに追加された変更をリポジトリに保存するコマンド。

コミット時には、変更内容を説明するメッセージを記述することが推奨されます。

コミットメッセージは、「-m」オプションを使用して指定できます。

git commit -m "ここには好きなメッセージが書ける"

git log:コミット履歴の表示

git log

リポジトリのコミット履歴を表示するために使用されます。

コマンドを使うと以下が一覧で表示されます。

$ git log
commit eadf0872cf32e24ee71fbd16742965cccf8d76d4 (HEAD)
Author: Yu <admin@itc.tokyo>
Date:   Sat Feb 11 17:24:29 2023 +0900
    Revert "チュートリアル8-8:プロフィール・ユーザー別のアーカイブページを作成
する方法"
    This reverts commit e569ad2d68706c880b6e3eb26d82b3fb076f4b86.

commit e569ad2d68706c880b6e3eb26d82b3fb076f4b86
Author: Yu <admin@itc.tokyo>
Date:   Sun Jan 22 11:01:14 2023 +0900
    チュートリアル8-8:プロフィール・ユーザー別のアーカイブページを作成する方法

commit 3c4da66e1c12592fbfdff3f462db482d3ef616ec
Author: Yu <admin@itc.tokyo>
Date:   Sun Jan 22 10:17:20 2023 +0900
    チュートリアル8-7:django-filterの導入と実装方法

また、`–oneline`や`–graph`オプションを使用することで、履歴の表示形式を変更できます。

$ git log --oneline
eadf087 (HEAD) Revert "チュートリアル8-8:プロフィール・ユーザー別のアーカイブページを作成する方法"
e569ad2 チュートリアル8-8:プロフィール・ユーザー別のアーカイブページを作成する
方法
3c4da66 チュートリアル8-7:django-filterの導入と実装方法
c1a7011 チュートリアル8-6:DateFieldにカレンダーで日付けを入力する方法

git diff:変更の差分表示

git diff

作業ディレクトリとステージングエリア、あるいはコミット間の差分を表示するために使用されます。

ファイル名や行番号とともに、追加・削除された行の情報が確認できます。

git branch:ブランチの操作

git branch

ブランチの一覧表示や作成、削除をおこなうために使用されます。

新しいブランチを作成するには、`git branch <branch_name>`を実行します。

ブランチの削除には、`-d`オプションを使用します。

ブランチとは、分岐点のこと。

詳しくは後述しているので、このまま読み進めるか、こちらをご覧ください。

git checkout:ブランチやコミットへの切り替え

git checkout

ブランチやコミットへの切り替えを行うために使用されます。

ブランチへの切り替えは、以下のとおり。

git checkout <branch_name>

コミットへの切り替えには、コミットのハッシュを指定して実行します。

また、`-b`オプションを使用することで、新しいブランチを作成して切り替えることも可能です。

git merge:ブランチの統合

git merge

ブランチを統合するために使用されます。

統合先のブランチに切り替えた後、以下を実行します。

git merge <branch_name>

指定したブランチの変更を取り込むことができます。コンフリクトが発生した場合は、解決してコミットをおこないましょう。

git pull:リモートリポジトリの変更の取得

git pull

リモートリポジトリの変更を取得し、現在のブランチに統合するために使用されます。

このコマンドは、「git fetch」と「git merge」を一度に実行することに相当します。

git pull origin

git push:リモートリポジトリへの変更のアップロード

git push

ローカルリポジトリの変更をリモートリポジトリにアップロードするために使用されます。

以下の形式で実行します。

git push <remote_name> <branch_name>

リモートリポジトリへのアクセス権限が必要です。

git remote:リモートリポジトリの管理

git remote

ジトリの管理をおこなうために使用。

リモートリポジトリの一覧表示、追加、削除が行えます。

また、`-v`オプションを付けることで、各リモートリポジトリのURLを確認することができます。

$ git remote -v
origin	git@github.com:Yulikepython/itc-tube.git (fetch)
origin	git@github.com:Yulikepython/itc-tube.git (push)

git fetch:リモートリポジトリの最新情報取得

git fetch

リモートリポジトリの最新情報を取得するために使用されます。

git fetch <remote_name>

リモートリポジトリのブランチやタグの情報がローカルに更新されます。

ただし、自動的に統合は行われません。

git stash:作業の一時保存

git stash

作業ディレクトリの変更を一時的に保存するために使われます。

ブランチの切り替えなどを行う前に、未完了の作業を退避させる役割です。

保存した作業は、「git stash apply」や「git stash pop」コマンドを使用して復元可能。

「git stash list」で一時保存された作業の一覧を表示できます。

Gitコマンド一覧22選

上記のものもふくめて、一覧にしました。

参考にしてください。

コマンド概要
git init新しいGitリポジトリを初期化する
git clone既存のリポジトリを複製する
git add変更をステージングエリアに追加する
git status現在のステージングエリアとワーキングディレクトリの状態を表示する
git commitステージングエリアの変更をコミットする
git logコミット履歴を表示する
git diff変更の差分を表示する
git branchブランチの一覧を表示し、現在のブランチを示す
git checkoutブランチやコミットを切り替える
git mergeブランチを統合する
git pullリモートリポジトリの変更をローカルリポジトリに取得・統合する
git pushローカルリポジトリの変更をリモートリポジトリにアップロードする
git remoteリモートリポジトリの管理
git fetchリモートリポジトリの最新情報を取得する
git stash作業中の変更を一時的に保存する
git rmファイルを削除し、ステージングエリアに追加する
git mvファイル名を変更し、ステージングエリアに追加する
git bisectコミットの範囲からバグを特定する
git grepパターンに一致する行を検索する
git show任意のオブジェクトの情報を表示する
git resetコミットを取り消す
git rebaseコミットを別のブランチに適用する

Gitで知っておくべき用語6選

Gitにはその特有の用語があります。

以下の6つは必ずおさえておきましょう。

リポジトリ

リポジトリは、プロジェクトのファイルや変更履歴を保存する場所のこと。

主にローカルリポジトリとリモートリポジトリの2種類が存在します。

コミット

コミットは、ファイルやディレクトリの変更を記録する単位で、一意のハッシュ値(SHA-1ハッシュ)を持ちます。

コミットには、以下の情報が含まれています。

コミットを積み重ねることで、プロジェクトの変更履歴が形成されていくのです。

ブランチ

ブランチ(branch)とは、Gitにおける開発の分岐点を表します。

ブランチを利用するメリットは、異なるバージョンのコードを同時に開発・管理でき、新機能の開発やバグ修正を効率的におこなえること。

新しいブランチを作成すると、元のブランチからのコピーが作成され、そのブランチ上で変更を加えると、それぞれが異なるコミット履歴を持ちます。

ブランチの作成と操作に関わるコマンドを知っておきましょう。

ブランチでの開発が完了したら、git mergeコマンドで、変更をメインのコードベース(一般的にはmainまたはmasterブランチ)に統合します。

ただし、複数のブランチで同じ箇所の変更が行われている場合は、コンフリクトが発生し、その解決後でなければマージはできません。

タグ

タグは、特定のコミットに名前を付ける機能で、リリースやマイルストーンの管理に使われます。

タグは、軽量タグとアノテーションタグの2種類です。

アノテーションタグではメッセージや署名を含められます。

マージ

マージは、ブランチの変更を統合する操作のこと。

一般的には、フィーチャーブランチの変更をメインブランチに統合する際に使われる用語。

マージ時にコンフリクトが発生した場合は、手動で解決する必要があります。

コンフリクト

コンフリクトは、複数のブランチで同じファイルの同じ箇所が変更された場合に発生する衝突です。

コンフリクトが発生した場合は、開発者が手動で修正し、解決した上でマージを行う必要があります。

Gitコマンドについての基礎知識

そもそもGitコマンドとは何のためのものでしょうか?

その定義や歴史、用途まで見ていきます。

Gitとは何か

Gitは、分散型バージョン管理システムの一つで、コードやファイルの変更履歴を効率的に管理できるツールです。

2005年にLinuxカーネルの開発者であるLinus Torvaldsによって開発されました。

現在は多くのプロジェクトで広く使われており、オープンソースから商用ソフトウェアまで多岐にわたっています。

Gitの利点

Gitの主な利点は、分散型であることから、各開発者がローカルリポジトリで作業できること。

ネットワーク接続が不安定でも作業が可能であり、複数人での開発でも競合が発生しにくくなります。

ブランチを作って別々に作業したり、必要なときに統合したりと、機能追加やバグ修正などの作業がわかりやすいのが特徴です。

コミットの取り消しや履歴の追跡も容易なので、開発者が安心して作業できます。

Gitの歴史

Linuxカーネル開発チームが使用していたBitKeeperという管理システムのライセンスが問題となったことがきっかけで、Linus TorvaldsがGitの開発を開始しました。

2005年4月に最初のバージョンがリリースされてから、オープンソースコミュニティで急速に普及していったのです。

現在では、GitHubやGitLabなどのプラットフォームを通じて、多くの開発者がGitを利用しています。

バージョン管理システムの種類

バージョン管理システムには、集中型バージョン管理システム(Centralized Version Control System; CVCS)と分散型バージョン管理システム(Distributed Version Control System; DVCS)の2種類があります。

集中型バージョン管理システムでは、Subversion(SVN)が代表的です。

一方、分散型バージョン管理システムには、GitのほかにもMercurialやBazaarなどがあります。

Gitの主要な用途

Gitの主要な用途は、ソフトウェア開発やドキュメントの管理であり、プロジェクトの履歴管理やコラボレーションを円滑に行うことができます。

また、機能追加やバグ修正などの作業をブランチを用いて分けることができるため、効率的な開発が可能です。

オープンソースプロジェクトの参加やフォークも容易に行えるため、コミュニティ活動にも活用されています。

Gitのインストール方法

もしGitをこれから準備するのであれば、インストールが必要です。

Gitのインストールは、各OS(Windows, macOS, Linux)ごとに異なります。

git --version

このコマンドでバージョン情報が表示されない方は、以下の方法でGitをインストールしてください。

Windows

Windowsは少し複雑。

以下の手順でインストールしましょう。

Git for Windowsのダウンロード

公式ウェブサイト(https://git-scm.com/download/win)にアクセスし、インストーラーをダウンロード。

このページにアクセスすると、通常は自動的にWindows用のインストーラーのダウンロードが開始されます。

インストーラーの実行

ダウンロードしたインストーラー(Git-<version>-64-bit.exe または Git-<version>-32-bit.exe)を実行し、インストールウィザードが表示されることを確認します。

インストールオプションの選択

インストールウィザードの指示に従って、インストールオプションを選択。

初心者の場合は、デフォルトのオプションで問題ないでしょう。

特別な設定が必要な場合には、各オプションを変更してください。

インストールの実行

インストールオプションを選択し終わったら、インストールを実行。

インストールが完了すると、「Git Bash」および「Git GUI」がインストールされます。

Gitの確認

インストールが正常に完了したか確認するために、スタートメニューから「Git Bash」を起動してください。

起動して、バージョン確認のコマンドで表示されればOKです。

macOS

macOSには二通りの方法があります。

Xcode Command Line Toolsを通じてインストール

Gitがインストールされていない場合、またはバージョンを更新したい場合は、以下のコマンドを実行してXcode Command Line Toolsをインストールしましょう。

xcode-select --install

表示されるポップアップに従ってインストールを進めます。

これにより、Gitを含む他の開発ツールがインストールされます。

Homebrewを使ったインストール方法

Homebrewを使って最新バージョンのGitをインストールすることも可能。

Homebrewがインストールされているかどうかを確認し、インストールされていない場合は、以下のコマンドでHomebrewをインストールしてください。

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

Homebrewがインストールされたら、以下のコマンドでGitをインストールします。

brew install git

Linux

LinuxにGitをインストールする手順は、使用しているディストリビューションによって異なります。

ここでは、一般的なディストリビューションであるDebian系(Debian、Ubuntuなど)とRHEL系(Fedora、CentOSなど)の手順を説明します。

Debian系(Debian、Ubuntuなど)

ターミナルを開いて、以下のコマンドを実行してパッケージリストを更新します。

sudo apt update

次に、以下のコマンドを実行してGitをインストールします。

sudo apt install git

Fedora

sudo dnf install git

CentOS

sudo yum install git

Gitの基本設定:SSHキーの生成と登録

Gitを使うためには、設定も必要です。

以下の順で設定を済ませましょう。

Gitの設定について

Gitをインストールした後、ユーザー名やメールアドレスを設定する必要があります。

これらの情報は、コミット時に利用されるものです。

git config

GitへのSSHキーの登録方法

リモートリポジトリとの通信には、SSHキーを利用することが推奨されます。

SSHキーは、公開鍵と秘密鍵のペアで構成され、秘密鍵を使って認証をおこないます。

SSHキーを生成するには、`ssh-keygen`コマンドを使用し、生成された公開鍵をリモートリポジトリに登録します。

詳しくはこちらをどうぞ。

上級者向けGitコマンド

以上の内容を理解できたら、上級向けのコマンドも覚えていきましょう。

以下も使いこなせると、できることの幅が広がります

コミットの履歴の操作

上級者向けのコマンドとして、`git rebase`や`git cherry-pick`を使ってコミット履歴を操作することができます。

これらのコマンドを使用することで、コミットの順序を変更したり、特定のコミットを別のブランチに適用できるのです。

リベースの利用

`git rebase`コマンドは、ブランチのベースを変更するために使用されます。

これにより、ブランチの変更履歴を別のブランチに適用したり、コミットをまとめて整理することができます。

コミットの修正と取り消し

`git commit –amend`コマンドを使って、最後のコミットを修正できます。

`git revert`や`git reset`コマンドを使って、コミットを取り消すことも可能です。

ただし、これらの操作は、他の開発者と共有されているリポジトリで注意深く使用する必要があります。

サブモジュールの活用

Gitサブモジュールは、外部のリポジトリを現在のリポジトリに組み込む機能です。

複数のプロジェクトで共通のコードやライブラリを管理しやすくなります。

`git submodule`コマンドを使ってサブモジュールの追加や更新がおこなえるのです。

Gitのワークフロー

Gitのワークフローはこちら。

Gitはさまざまな使い方ができる特徴があります。

一人での開発

一人での開発では、ブランチを活用して機能ごとに作業をわけることが推奨されます。

開発が完了したら、masterブランチにマージしてリリースしましょう。

シンプルなブログアプリの開発プロジェクトの例をご紹介します。

開発の開始

mainブランチで開発を開始します。このブランチは、常に安定した状態を保つことが目的です。

ユーザー認証機能開発のブランチを作成

新機能「ユーザー認証」を追加するために、以下のコマンドでuser-authenticationブランチを作成し、切り替えます。

git checkout -b user-authentication

新しいブランチでコミット

user-authenticationブランチで、ユーザー認証に関連するコードを追加・変更し、適切なタイミングでコミットをおこないます。

完成後のマージ

ユーザー認証機能が完成したら、git checkout mainmainブランチに切り替えてから、以下のコマンドでブランチを統合します。

git merge user-authentication

user-authenticationブランチの変更をmainブランチに統合しました。

投稿機能構築のブランチ作成

新機能「記事投稿」を追加するために、post-articleブランチを作成し、切り替え。

git checkout -b post-article

変更完了後、統合

post-articleブランチで、記事投稿に関連するコードを追加・変更し、適切なタイミングでコミットをおこないましょう。

記事投稿機能が完成したら、git checkout mainmainブランチに切り替えて、post-articleブランチの変更をmainブランチに統合します。

git merge post-article

チームでの開発

チームでの開発では、フィーチャーブランチを使って機能ごとに作業を分け、プルリクエストを活用してコードレビューを行います。

また、コンフリクトの解決やブランチの統合も重要な要素です。

Gitフロー

Gitフローは、ブランチを活用したワークフローの一つで、以下を使って開発します。

リリースが完了したら、masterブランチにマージし、タグを付けましょう。

GitHubフロー

GitHubフローは、シンプルなブランチベースのワークフローで、リポジトリに対して1つのデフォルトブランチ(通常はmasterまたはmain)が存在します。新しい機能やバグ修正は、デフォルトブランチからブランチを切り、作業を行います。作業が完了したら、プルリクエストを作成し、コードレビューとテストを行います。問題がなければ、デフォルトブランチにマージし、すぐにデプロイします。

GitLabフロー

GitLabフローは、GitフローとGitHubフローの要素を組み合わせたワークフローです。環境ごとにブランチを持ち、継続的デリバリーが可能です。新しい機能やバグ修正は、デフォルトブランチからブランチを切り、作業を行います。作業が完了したら、プルリクエストを作成し、コードレビューとテストを行います。問題がなければ、環境ごとのブランチにマージし、デプロイを行います。

Gitの便利なツールとサービス

クライアントツール

Gitクライアントツールは、コマンドライン操作の代わりに、GUIを使ってGit操作を行うためのツールです。SourceTreeやGitHub Desktopなどがあります。

コードレビューツール

コードレビューツールは、コードの品質を向上させるために、コードの変更をレビューする際に使用されます。GitHubやGitLabのプルリクエスト機能、Bitbucketのプルリクエスト機能、Gerritなどがあります。

継続的インテグレーション(CI)ツール

継続的インテグレーション(CI)ツールは、コードの変更を自動でビルド、テスト、デプロイすることができます。これにより、開発プロセスが効率化され、バグの発見や修正が容易になります。主なCIツールには、Jenkins、Travis CI、CircleCI、GitLab CI/CD、GitHub Actionsなどがあります。

トラブルシューティングとよくある質問

トラブル時の対応方法もご紹介しておきます。

事前に目を通しておけば、回避できるものもあるでしょう。

コミットの取り消しや修正

コミットを取り消すには、`git revert`や`git reset`コマンドを使用。

コミットの修正には、`git commit –amend`を使います。

ただし、共有されているリポジトリでの操作には注意が必要です。

コンフリクトの解決

コンフリクトは、同じファイルの同じ箇所を複数の開発者が同時に変更した場合に発生します。

コンフリクトが発生した場合は、手動で修正してください。

完了後、`git add`と`git commit`で変更を保存します。

リモートリポジトリの操作

リモートリポジトリへの変更を取得するには、`git fetch`や`git pull`コマンドを使います。

リモートリポジトリに変更をアップロードするには、`git push`を使用してください。

大きなファイルの取り扱い

大きなファイルをGitで管理する場合、リポジトリのサイズが大きくなる問題があります。

これを解決するために、Git LFS(Large File Storage)を使って大きなファイルを効率的に管理できます。

Git LFSを使用するには、Git LFSをインストールし、git lfs installコマンドを実行してセットアップをおこなう必要があります。

セットアップ後、git lfs trackコマンドを使って、リポジトリでLFSを使用するファイルタイプを指定。

指定されたファイルタイプの大きなファイルが自動的にGit LFSを使って管理されるようになります。

Gitのベストプラクティスとチームでの利用

Gitの使い方について、よく使われている例やおすすめの方法をご紹介します。

コミットメッセージの書き方

コミットメッセージは、変更内容を簡潔かつ明確に説明することが重要。

コミットメッセージには一貫性があることが望ましいです。

ブランチ名の付け方

ブランチ名は、作業内容を表す簡潔な名前にすることが推奨されます。

チームで開発する場合は、ブランチ名に機能名やイシュー番号を含めると、作業内容がわかりやすくなります。

以下は例です。

コードレビューのポイント

コードレビューでは、コードの品質や可読性、バグの有無、パフォーマンスなどをチェックします。

また、レビュアーは、コードに対する理解を深め、改善点やアイデアを提案することが重要です。

チーム内でのGitの運用方法

チームでGitを利用する場合、一貫したワークフローを設定し、チームメンバーがそのルールに従って作業を行うことが重要です。また、コミュニケーションを密に行い、互いの変更内容を把握し合うことが望ましいです。

今後の学習方法

Gitを学ぶためのリソース

Gitを学ぶためには、公式ドキュメントや書籍、オンラインコース、チュートリアルなどのリソースが役立ちます。

また、実際にプロジェクトでGitを利用してみることで、理解を深めることができます。

Gitを活用した実践プロジェクト

Gitを活用した実践プロジェクトでは、オープンソースプロジェクトへの参加や、チームでの開発プロジェクトなどがあります。

これらのプロジェクトでGitを使いこなすことで、スキルを磨くことができます。

こちらでは、アプリ開発をGitに保存しながら解説しています。

まとめ:Gitを極めて、開発を効率化しよう

当記事では、Gitの基本概念やコマンド、ワークフロー、ベストプラクティスなどについて解説しました。

Gitは、効率的なバージョン管理とチームでの開発を支援する強力なツールです。

Gitの知識と経験を身につけることで、バージョン管理やチームでの開発がスムーズにおこなえるようになるでしょう。

モバイルバージョンを終了