使いこなせると便利なGitコマンド一覧

未経験エンジニアが現場に配属され、最初に苦戦するのが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 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 <ブランチ名> ブランチ切り替え

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について

  • HEAD^
    • 直前コミット
  • HEAD~{n}
    • n個前のコミット

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 --since="7 days ago" --pretty=format:"" --name-only 1週間で変更があったファイル
git log -p <ファイル名> 特定ファイルの履歴を表示
git log -L 10,15:<ファイル名> 特定ファイルの10〜15行目の履歴を表示

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 <リモート名> リモートで削除されているが、ローカルで残っているブランチを削除

リモートリポジトリの登録例

# HTTPS接続の場合(GitHubアカウントのユーザー名、パスワードによる認証)
git remote add origin https://github.com/ユーザ名/リポジトリ名
 
# SSH接続の場合(公開鍵認証)
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元ユーザ名/リポジトリ名

これ以降、 upstreamfork元リモートリポジトリ の場所を表す 別名(識別子) として利用できます。

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 <リモート名> <ブランチ名> リモートでブランチ生成も行う
わくわくBank.
ソフトウェア開発で必要とされる技術、用語、概念を整理しています。