未経験エンジニアが現場に配属され、最初に苦戦するのがGitです。非常に便利ですが、使いこなすまでには時間がかかります。ここでは、使いこなせると便利なGitコマンド一覧を紹介します。少しずつでも使いこなせるように目指してみてください!
設定とリポジトリ作成
config|設定
「~/.gitconfig」に書き込まれます。
git config --global user.name "hoge"
git config --global user.email "hoge@hogehoge.com"
設定ファイルについて
ファイル |
対象 |
確認コマンド |
/etc/gitconfig |
全ユーザ |
git config --system -l |
~/.gitconfig |
特定ユーザ |
git config --global -l |
.git/config |
特定リポジトリ |
git config --local -l |
git config -l
で最終的に適用される設定値を確認できます。
コミッタ情報を環境変数で設定
環境変数でもコミッタ情報を設定できます。下記4つの環境変数を登録します。
export GIT_COMMITTER_NAME="xxxxxxxxxxx"
export GIT_COMMITTER_EMAIL="xxxxxxxxxxx@xxxx.com"
export GIT_AUTHOR_NAME="xxxxxxxxxxx"
export GIT_AUTHOR_EMAIL="xxxxxxxxxxx@xxxx.com"
環境変数がconfigファイルの設定より優先されます。
init|リポジトリ作成
.git
が作成されます。.git
を削除すればgit管理を辞めることができます。
ブランチ作成 & 切り替え
branch|ブランチ操作
コマンド |
説明 |
git branch |
ローカルブランチの一覧表示 |
git branch -r |
リモートブランチ一覧表示 |
git branch -a |
リモートとローカルのブランチの一覧表示 |
git branch <ブランチ名> |
ブランチ作成 |
git branch -d <ブランチ名> |
ブランチ削除 |
git branch -b <ブランチ名> |
ブランチ作成 & 切り替え |
git branch -m <古いブランチ名> <新しいブランチ名> |
ブランチリネーム |
git branch -d <ブランチ名> |
ブランチ削除 |
checkout|ブランチ切り替え
コマンド |
説明 |
git checkout <ブランチ名> |
ブランチ切り替え |
git checkout <ブランチ名> <ファイル名> |
特定ファイルだけブランチ切り替え |
checkoutにより、HEADを移動させることで、使用するブランチが変更されます。コミットしてない変更内容も移動先ブランチに移動されます。
git checkout HEAD <ファイル名>
とすることで、特定ファイルだけ変更してない状態に戻せます。
stash|一時退避
コマンド |
説明 |
git stash |
一時退避 |
git stash list |
退避の一覧表示 |
git stash pop |
退避を戻す |
git stash apply <stash名> |
stash名を指定して戻す |
git stash clear |
退避の消去 |
git stash drop <stash名> |
退避した作業を消す |
checkoutを行うと、元のブランチで行った変更内容は、移動先のブランチに移動されます。変更内容を移動させたくない場合、stashを使って退避させてからcheckoutを行います。
ステージング作業
add|登録
コマンド |
説明 |
git add <ファイル名> |
ステージングに登録 |
rm|削除
コマンド |
説明 |
git rm -f <ファイル名> |
ファイル削除 |
コミット
commit|コミット
コマンド |
説明 |
git commit -m "コミットメッセージ" |
コミット |
git commit --amend |
直前のコミットを修正 |
reset|取り消し
コマンド |
説明 |
git reset HEAD <ファイル名> |
ステージング登録取り消し |
git reset --hard HEAD^ |
直前のコミットを取り消す(ワークディレクトリの内容を書き換える) |
git reset --soft HEAD^ |
直前のコミットを取り消す(ワークディレクトリの内容をそのまま) |
HEADについて
revert|打ち消し
コマンド |
説明 |
git revert <コミットID> |
指定コミットの変更内容を元に戻すための 新しいコミット を生成 |
merge|統合
コマンド |
説明 |
git merge <ブランチ名> |
現在ブランチに指定ブランチの変更を統合 |
rebase|コミット改変
コマンド |
説明 |
git rebase <ブランチ名> |
現在ブランチを指定ブランチの最新コミットにリベース |
rebaseの interactiveモード
を利用すると、コミット履歴を整理することができます。
rebaseでコミットログを整理(順序入れ替え, 統合, メッセージ変更) で詳しく取り上げています。
cherry-pick|他ブランチのコミット反映
コマンド |
説明 |
git cherry-pick <コミットID> |
別ブランチの特定コミットをカレントブランチに反映 |
tag|タグ操作
コマンド |
説明 |
git tag |
タグ一覧を表示 |
git tag <タグ名> |
特定のコミットに対してtagを付与 |
git tag -a <タグ名> -m 'コメント' <コミットID> |
コミットを指定してtagを付与 |
git push origin <タグ名> |
ローカルで作成したタグをリモートを反映 |
作業状況 & 履歴確認
status|ローカル変更を確認
コマンド |
説明 |
git status |
ローカル変更を確認 |
show|指定コミットの変更点を確認
コマンド |
説明 |
git show <コミットID> |
指定コミットの変更点を確認 |
log|コミット変更履歴確認
コマンド |
説明 |
git log |
コミットログ履歴を表示 |
git log --oneline |
1行表示 |
git log -p |
コミットの変更内容も表示 |
以下、コミットを絞り込むためのオプションです。
コマンド |
説明 |
git log --since="7 days ago" --pretty=format:"" --name-only |
1週間で変更があったファイル |
git log <ファイル名> |
特定ファイルの履歴を表示 |
git log -L 10,15:<ファイル名> |
特定ファイルの10〜15行目の履歴を表示 |
git log -G '正規表現' |
コミットの変更内容から正規表現で検索して表示 |
git log -S '文字列' |
コミットの変更内容から文字列で検索して表示 |
-G
-S
オプションは、昔存在したコードがいつ削除されたか確認するときに役立ちます。
blame|誰がいつ変更したか確認
コマンド |
説明 |
git blame <ファイル名> |
特定ファイルの各行について、誰がいつ変更したか確認 |
diff|変更差異を確認
コマンド |
説明 |
git diff <ブランチ名> <ブランチ名> |
ブランチ間の差分を表示 |
git diff HEAD |
最新コミットとの差分を表示 |
git diff --compact-summary |
差分の要約を表示 |
git diff -- target_path |
指定ファイルのみの差分を表示 |
リモート連携
remote|リモートリポジトリ登録
コマンド |
説明 |
git remote -v |
リモートリポジトリ一覧 |
git remote add <リモート名> <リモートリポジトリ> |
リモートリポジトリ登録 |
git remote set-url <リモート名> <リモートリポジトリ> |
リモートリポジトリを変更 |
git remote prune --dry-run <リモート名> |
リモートで削除されているが、ローカルで残っているブランチを表示 |
git remote prune <リモート名> |
リモートで削除されているが、ローカルで残っているブランチを削除 |
リモートリポジトリの登録例
git remote add origin https://github.com/ユーザ名/リポジトリ名
git remote add origin git@github.com:ユーザ名/リポジトリ名
origin
が リモートリポジトリ
の場所を表す 別名(識別子)
として利用できます。
origin/masterとmasterの違い
- origin/master
- リモートリポジトリ「origin」のブランチ「master」です。
- master
- ローカルリポジトリのブランチ「master」です。
fork元リポジトリを登録
通常、fork元リポジトリには upstream
という名前をつけます。
git remote add upstream git@github.com:fork元ユーザ名/リポジトリ名
これ以降、 upstream
が fork元リモートリポジトリ
の場所を表す 別名(識別子)
として利用できます。
clone|リモートリポジトリ取得
コマンド |
説明 |
git clone <リモートリポジトリ> |
リモートリポジトリ取得 |
git clone -b <ブランチ名> <リモートリポジトリ> |
ブランチを指定して取得 |
fetch|リモートの変更を取得
コマンド |
説明 |
git fetch <リモート名> |
リモートの変更を取得 |
PRの動作確認をローカルで行いたい場合、以下のように行います。
# 1. ブランチをローカルに取り込む。(forkしているならupstreamです。)
git fetch origin pull/PR番号/head:ブランチ名
# 2. 取り込んだブランチに移動する。
git checkout ブランチ名
pull|リモートの変更を取得して反映
コマンド |
説明 |
git pull <リモート名> <ブランチ名> |
リモートの変更を取得して反映 |
push|リモートに変更を反映
コマンド |
説明 |
git push <リモート名> <ブランチ名> |
カレントブランチをリモートリポジトリの特定ブランチに反映 |
git push --set-upstream <リモート名> <ブランチ名> |
リモートでブランチ生成も行う |