はじめに #
個人的によく使用するGitのコマンドをまとめた。なお、個人利用かつ小規模なソフトウェア開発環境であり、ブランチは作成しないため、それに関連するコマンドは記載していない。
検証環境:Git for Windows v2.27.0
リポジトリのクローン (clone) #
リモートにあるリポジトリをローカルにクローン(コピー)する。
git clone https://github.com/xxxxx/xxxxxxxx.git
リポジトリの状態を確認する (status) #
git status
ファイルの追加 (add) #
ファイルをインデックス(ステージングエリア)に登録する。ファイル名をスペースで区切ることで、複数のファイルを追加できる。また、ファイル名は相対パスまたは絶対パスで指定する。
git add <ファイル名>
Gitで管理していないファイルも含めてインデックスに追加する(カレントディレクトリより上のフォルダ階層も含むリポジトリ全体を処理する)。
$ git add -A
or
$ git add --all
Gitで管理している全てのファイルの変更内容をインデックスに追加する(カレントディレクトリより上のフォルダ階層も含むリポジトリ全体を処理する)。
$ git add -u
or
$ git add --update
コミット (commit) #
コミット時には、-m
オプションの後ろにメッセージを入力する。
$ git commit -m "コミットメッセージ"
複数行のコミットメッセージを入力したい場合は、以下のように複数の-m
オプションを付ける。
$ git commit -m "コミットメッセージ1" -m "コミットメッセージ2"
または、以下のようにオプションを付けずに実行するとテキストエディタが起動するので、それに入力する。
$ git commit
プッシュする (push) #
$ git push
ファイルの差分を確認 (diff) #
git diff
でインデックスと作業ツリー(現在ローカルで作業中のディレクトリ)の差分を表示する。ファイル名を指定しない場合は、全ファイルの差分を表示する。
git diff <ファイル名>
特定のコミットとの差分を表示する場合は、ハッシュ値を追加する(ファイル名
はオプション)。
git diff <commit> <ファイル名>
また、コミットとインデックスの差分を表示するには、--cached
オプションを追加する(ファイル名
はオプション)。
git diff --cached <ファイル名>
git diff
のオプションと差分の関係は以下の通り。
┌ git diff --cached <commit> ┐
| ┌-- git diff --cached --┐
| HEADコミット インデックス 作業ツリー
O-----O----------------------O-------------O
| └-- git diff -┘
└------------ git diff <commit> -----------┘
さらに、コミット間の比較も可能(ファイル名
はオプション)。
git diff <変更前のcommit> <変更後のcommit> <ファイル名>
単語単位で差分を表示する場合は、--word-diff
オプションを追加する。さらに文字の色の違いだけで差分を表示させるには、後ろに=color
を追加する。
git diff --word-diff
git diff --word-diff=color
操作の取り消し・修正 #
addの取り消し (reset) #
git add
でファイルの変更がインデックスに登録されるが、その登録を取り消すには以下を実行する。ファイル名
を指定しない場合は、全てのファイルのインデックス登録が削除される。なお、以下のコマンドを実行してもファイルの中身は変更されない(HEADコミットの状態には戻らない)。
$ git reset HEAD <ファイル名>
commitの取り消し (reset) #
直前のコミットを取り消すには以下を実行する。
$ git reset --hard HEAD^
なお、オプションの意味は次の通り。
--hard
: コミットを取り消した上でワークディレクトリの内容も書き換える。--soft
: ワークディレクトリの内容はそのままでコミットだけを取り消す。
また、HEAD^
はHEADコミットの1つ前のコミットを意味する。HEAD^
の代わりにコミットのハッシュ値としても良い。
コミットメッセージの修正 (ammend) #
直前のcommitのメッセージを修正したい場合、以下のコマンドを実行する。
$ git commit --amend "修正後のコミットメッセージ"
コミット履歴を確認する (log) #
$ git log
また、log
の後ろにファイル名を追加すると、そのファイルが関連するコミットのみ表示されるようになる。
主なオプションは以下の通り。
オプション | 説明 |
---|---|
-<n> |
n 回分の最新コミットを表示 |
--oneline |
1コミットを1行で表示 |
ファイル操作 #
ファイル削除 (rm) #
ファイルを削除し、gitの管理からも外す。
$ git rm <ファイル名>
フォルダごと削除し、gitの管理からも外す。
$ git rm -r <フォルダ名>
ファイルをgitの管理から外すが、ファイル自体は作業ツリーに残す。
$ git rm --cached <ファイル名>
ファイル名変更 (mv) #
$ git mv <元のファイル名> <変更後のファイル名>
ファイルを特定のコミットまで戻す (checkout) #
$ git checkout <commit> <ファイル名>
最新のコミットに戻したい場合は、ハッシュ値の代わりにHEAD
でも良い。
ファイル内を検索 (grep) #
指定したキーワードが含まれるファイル名と、キーワードを含む行を表示する(大文字小文字は区別される)。また、検索対象はカレントディレクトリ以下のフォルダである。
$ git grep "キーワード"
キーワード
にスペースが含まれない場合は、ダブルクォーテーションは不要である。
主なオプションは以下の通り。
オプション | 説明 |
---|---|
-i |
大文字小文字を区別しない |
-w |
単語単位で検索する |
-E |
正規表現を使う |
-n |
行番号を表示する |
また、AND, OR検索は--and
/--or
オプションを使う。以下のように各キーワードの前に-e
を置いて、--and
/--or
を挟む。
$ git grep -e "キーワード1" --and -e "キーワード2"
ただし、キーワード1
, キーワード2
は、ファイルの同じ行になければ検索にヒットしない。さらに、--not
オプションを使うとNOT検索もできる。
# 例1: ABCと123を両方含む
$ git grep -e ABC --and -e 123
# 例1: ABCか123の少なくとも片方を含む
$ git grep -e ABC --or -e 123
# 例1: ABCを含むが、123は含まない
$ git grep -e ABC --and --not -e 123
コミットの詳細確認 (show) #
以下のコマンドで、コミットの日時や、ファイルの差分などが表示される。
$ git show <commit>
なお、<commit>
を入力しないと、最新コミットの詳細が表示される(以下と同じ意味)。
$ git show HEAD
エイリアスの登録 #
エイリアスは「別名」の意味。エイリアスを設定することで、長いコマンド(オプションを含む)を短縮した形で呼び出すことができる。エイリアスを設定するには、Gitの設定ファイルを編集する方法と、コマンドから設定する方法の2つがある。また、エイリアスは下表の3階層で設定可能であり、複数の階層で同じエイリアスが設定されている場合には、数字が大きい階層が優先される。
階層 | 種類 | 対象範囲 |
---|---|---|
1 | system | マシン単位 |
2 | global | ユーザ単位 |
3 | local | リポジトリ単位 |
設定ファイルを直接編集するには、以下のコマンドを実行する(ユーザ単位の設定ファイルの場合)。
git config --global --edit
マシン単位やリポジトリ単位の設定ファイルを編集するには、--global
を--system
や--local
にそれぞれ変更する。
実行すると設定ファイルがエディタで開かれるので、以下のようにエイリアスを記述する。
[alias]
co = checkout
logo = log --oneline
ここで、[alias]
というセクションを作っており、それより後の行にエイリアスを登録する。=
の左側にエイリアスを、右側に短縮前のコマンドをそれぞれ記述する。記述が終了したら、エディタを閉じる。
また、コマンドからエイリアスを設定するには、以下のようなコマンドを実行する(ユーザ単位で設定する場合)。
git config --global alias.co checkout
git config --global alias.logo "log --oneline"
マシン単位やリポジトリ単位で設定するには、--global
を--system
や--local
にそれぞれ変更する。コマンドを実行すると、対応する設定ファイルにエイリアスが登録されている。
ヘルプを読む #
Gitのコマンドのヘルプを表示するには、以下のいずれかを実行する。
$ git help <verb>
$ git <verb> --help
$ man git-<verb>