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