Gitで使用頻度が高い基本的なGitコマンドを出題します。
ブランチの操作や変更のコミット、プッシュなど基礎的なコマンドです。
例:add、commit、checkout、pull、push
全61問

  • git add

    作業ディレクトリ内にある変更をステージングエリアに追加する。
    カレントディレクトリ以下の変更のみ次のコミットに含める。

    git add .

  • 指定したディレクトリパスとファイルをステージングエリアに追加する。
    ステージングエリアに登録した特定のファイルの変更のみ次のコミットに含める。

    ファイル名:dir/file.txt

    git add dir/file.txt

  • 指定したディレクトリ内のすべてのファイルをステージングエリアに追加する(ワイルドカード使用)

    git add dir/*

  • 作業ディレクトリ内にある全てのファイルの変更をステージングエリアに追加する。
    オプションでコマンドを実行しているカレントディレクトリの位置に関わらず作業ディレクトリ内にある全ての変更をステージングし、
    次のコミットに含める。

    git add -A

  • git commit

    ステージングエリアに登録した変更をコミットする。
    コマンド実行後にコミットメッセージを入力するためのエディタが開き、
    保存するとコミットされる。

    git commit

  • ステージングエリアに登録した変更をコミットする。
    コミットメッセージをコマンドから直接入力する。

    メッセージ:"message"

    git commit -m "message"

  • 作業ディレクトリで変更された全てのファイルをステージングエリアに登録とコミットを行う。
    コマンド実行後にコミットメッセージを入力するためのエディタが開き、
    保存するとコミットされる。
    新規作成したファイルはステージングエリアに登録されない。

    コミットメッセージ:message

    git commit -am "message"

  • git checkout

    新しいブランチを作成する。
    新しいブランチはコマンドを実行したHEADの位置から分岐し、
    ブランチ作成後のブランチは現在のブランチに留まる。

    ブランチ名:develop

    git checkout develop
    または
    git branch develop

  • 指定したコミットの特定のファイルを指定のディレクトリに復元する。
    復元した変更はステージングには登録されていない状態で戻る。

    コミットID:COMMITID1、ファイル名:dir/file.txt

    git checkout COMMITID1 dir/file.txt

  • 指定した名前の既存のブランチに切り替える。

    ブランチ名:develop

    git checkout develop
    または
    git switch develop

  • 指定した名前の新しいブランチを作成し、
    新規ブランチに切り替える。

    ブランチ名:develop

    git checkout -b develop
    または
    git switch -c develop

  • ステージングエリアに反映されていない全てのファイルの変更を取り消して元の状態にリセットする(カレントディレクトリ配下)

    git checkout .
    または
    git restore .

  • 現在のブランチに切り替える直前にいたブランチに戻る。

    git checkout -
    または
    git switch -

  • git push

    ローカルリポジトリの変更内容をリモートリポジトリにプッシュ(アップロード)する。
    現在のブランチがトラッキングしているリモートリポジトリに変更をプッシュする。

    git push

  • ローカルリポジトリの変更をリモートリポジトリのブランチにプッシュ(アップロード)する。

    リモートリポジトリ名:originブランチ名:master

    git push origin master

  • ローカルリポジトリのブランチの変更をリモートリポジトリの同名ブランチにプッシュする。
    コマンドを実行することで、
    現在のブランチの変更がリモートリポジトリに反映される。

    リモートリポジトリ名:origin

    git push origin

  • ローカルリポジトリの指定したブランチの変更をリモートリポジトリの指定したブランチにプッシュする。

    ブランチ名:master

    git push master

  • git merge

    指定したブランチの変更内容を現在のブランチに取り込み、
    変更を統合する。

    ブランチ名:master

    git merge master

  • 指定したリモートリポジトリのブランチを、
    ローカルリポジトリにある現在のブランチにマージする。

    リモートリポジトリ名:origin ブランチ名:master

    git merge origin/master

  • ローカルリポジトリにある指定したブランチの変更を、
    現在のブランチにマージする。

    ブランチ名:master

    git merge master

  • git branch

    ローカルリポジトリのブランチ一覧を表示する。

    現在のブランチはアスタリスク (*) が付与。

    git branch

  • ローカルとリモートのリポジトリにある全てのブランチを一覧表示する。

    git branch -a

  • リモートリポジトリのブランチ一覧を表示する。

    git branch -r

  • 新しいブランチを作成する。
    新しいブランチはコマンドを実行したHEADの位置から分岐し、
    ブランチ作成後のブランチは現在のブランチに留まる。

    ブランチ名:develop

    git branch develop
    または
    git checkout develop

  • git switch

    指定した名前の既存のブランチに切り替える。

    ブランチ名:develop

    git switch develop
    または
    git checkout develop

  • 指定した名前の新しいブランチを作成し、
    新規ブランチに切り替える。

    ブランチ名:develop

    git switch -c develop
    または
    git checkout -b develop

  • 強制的にブランチを作成する。
    指定したブランチ名が既に存在している場合でも、
    強制的にブランチを上書きして作成する。

    ブランチ名:develop

    git switch -C develop

  • 現在のブランチに切り替える直前にいたブランチに戻る。

    git switch -
    または
    git checkout -

  • git restore

    ステージングエリアに反映されていないファイルの変更を取り消して元の状態にリセットする(カレントディレクトリ配下)

    git restore .
    または
    git checkout .

  • ステージングエリアに反映されていない指定ファイルの変更を取り消して元の状態にリセットする。

    ファイル名:dir/file.txt

    git restore dir/file.txt

  • ステージングエリアに登録した変更ファイルのうち、
    指定したファイルの変更を取り消して元の状態にリセットする。

    ワーキングディレクトリの変更は保持。ファイル名:dir/file.txt

    git restore --staged dir/file.txt

  • 指定したコミットまでの作業内容を削除して元の状態にリセットする。

    コミットID:COMMITID1

    git restore -S COMMITID1

  • ステージングエリアに登録されている指定したファイルの変更を最新のコミット状態にリセットする。

    ファイル名:dir/file.txt

    git restore --staged dir/file.txt

  • git reset

    作業ディレクトリの変更は残したまま、
    最後のコミットを取り消す。

    最後のコミット:HEAD~1

    git reset HEAD~1

  • ステージングエリアに登録した変更を取り消す(指定のファイルのみ)

    ファイル名:dir/file.txt

    git reset dir/file.txt

  • 指定したコミットIDまでの全ての変更を取り消す。

    git reflogからreset履歴が確認可能。コミットを--hardで削除した場合はresetしたコミットに復元可能。

    git reset --hard COMMITID1

  • 直前のコミットを取り消して、
    変更内容をステージングエリアに保持する。
    コミット値に指定したコミットを削除する。
    コミット値にHEAD^を指定することで直前のコミットを取り消す。

    直前のコミット:HEAD^

    git reset --soft HEAD^

  • 直前のコミットと変更内容を完全に削除する。
    コミット値に指定した場合、
    指定したコミットとステージングエリアに登録した変更、
    作業ディレクトリの変更など作業中の内容を全てリセットする。
    一度もコミットしていない変更をgit reset --hardで消した場合の復元 git fsck --lost-found→git show

    直前のコミット:HEAD^

    git reset --hard HEAD^

  • 作業ディレクトリの変更を保持したまま、
    ステージングエリアに登録した変更を取り消す。

    コミット位置:HEAD

    git reset --mixed HEAD

  • git log

    コミットログ(履歴)を表示する。
    リポジトリのコミット履歴を表示し、
    各コミットの情報(コミットID、
    コミットしたユーザー、
    日時、
    メッセージなど)を表示する。

    git log

  • コミットログから指定したファイルの変更履歴のみ表示する。

    ファイル名:dir/file.txt

    git log dir/file.txt

  • コミットログから現在のブランチに存在する変更履歴のみ表示する。

    ブランチ名:master

    git log master

  • コミットログをコミット値とメッセージのみ一行の短縮形式で表示する。

    git log --oneline

  • コミットログからコミットごとの変更内容を表示する。

    git log -p

  • コミットログから指定した文字を含むコミットメッセージとコミット内容を検索する。

    検索キーワード:キーワード

    git log -S キーワード

  • コミットログからマージコミットを除外して表示する。

    git log --no-merges

  • 指定した期間のコミットログを表示する。

    期間:yyyy-mm-01 yyyy-mm-02

    git log —since=yyyy-mm-dd —until=yyyy-mm-dd

  • git pull

    リモートリポジトリから最新の変更を取得し、
    変更内容を適用する。
    fetchとmergeを同時に行う。

    git pull

  • 指定したリモートリポジトリの指定したブランチから最新の変更を取得し、
    変更内容を適用する。
    fetchとmergeを同時に行う。

    リモートリポジトリ名:origin ブランチ名:master

    git pull origin master

  • git fetch

    リモートリポジトリから最新の変更を取得する。
    マージは行わない。

    git fetch

  • リモートリポジトリから最新の変更を取得する。
    マージは行わない。
    リモートリポジトリで存在しない削除されたリモートブランチが、
    ローカルリポジトリのリモート追跡ブランチリストから削除されます。

    git fetch --prune

  • git status

    現在の作業ディレクトリとステージングエリアに登録されている状態を表示する。

    git status

  • 現在の作業ディレクトリとステージングエリアに登録されている状態を短縮形式で表示する。

    git status -s

  • git diff

    作業ディレクトリと最新コミットの変更内容を表示する。

    git diff

  • ステージングエリアと最新コミットの差分を表示する。

    git diff --staged
    または
    git diff —-cached

  • 現在の最新コミットと1つ前のコミットの間の差分を表示する。

    直前のコミット:HEAD^

    git diff HEAD^

  • 指定した2つのローカルブランチ同士を比較する。

    ブランチ名:master、develop

    git diff master develop

  • ローカルリポジトリの指定したブランチとリモートリポジトリの指定したブランチを比較する。

    リモートリポジトリ名:origin ブランチ名:master

    git diff master origin/master

  • 現在のローカルブランチとリモートブランチの差分を表示する。

    現在のローカルブランチ位置:HEAD、リモートリポジトリ名:origin、ブランチ名:develop

    git diff HEAD origin/develop

  • 作業ディレクトリ内の指定したファイルと最新のコミットとの差分を表示する。

    ファイル名:dir/file.txt

    git diff dir/file.txt

  • git remote

    指定した名前でリモートリポジトリを追加する。

    リモートリポジトリ名:origin、リモートリポジトリURL:https://github.com/test/xxx.git

    git remote add origin https://github.com/test/xxx.git

様々なコマンドやオプションを利用して利便性が高くなるコマンドを出題します。
覚えておくとよりGitを使いこなせて便利になります。
例:stash、blame, commit --amend
全62問

  • git add

    ステージングエリアに登録する時、
    変更されたファイルをステージングする。
    追跡中のファイルの変更のみが対象で、
    新規追加されたファイルは含まない。

    git add -u

  • git commit

    直前のコミットを修正して、
    新しいコミット内容に修正する。

    リモートリポジトリにpush後の使用は非推奨。コミットメッセージ:message

    git commit --amend -m "message"

  • git blame

    ファイルの各行の編集情報を表示し、
    誰が編集し、
    どのコミットで編集したか表示します。

    ファイル名:dir/file.txt

    git blame dir/file.txt

  • ファイルの各行の編集情報を表示し、
    誰が編集し、
    どのコミットで編集したか表示する。
    オプションで何行目から何行目か指定した範囲の行におけるファイルの変更を表示する。

    行:10行目から12行目ファイル名:dir/file.txt

    git blame -L 10,12 dir/file.txt

  • git checkout

    指定したブランチから指定したファイルまたはディレクトリを現在のブランチに反映する。

    ブランチ名:master、ファイル名:dir/file.txt

    git checkout master dir/file.txt

  • 指定したファイルを変更前の最新のコミットの状態に戻す。

    ファイル名:dir/file.txt

    git checkout -- dir/file.txt

  • git push(タグ)

    指定したタグをリモートリポジトリにプッシュする。

    タグ名:v1.2.3

    git push origin v1.2.3

  • ローカルで作成したタグをリモートリポジトリにプッシュする。

    git push --tags:

  • git merge

    マージしたブランチのコミットを作成せず、
    一つのコミットにまとめる。

    git merge --squash

  • マージ後にコンフリクトが発生した際、
    発生したコンフリクトなどを解消せずに、
    マージを中止します。

    git merge —abort

  • リモートブランチの変更をまとめて、
    新しいコミットを現在のブランチに作成します。

    リモートリポジトリ名:origin、ブランチ名:master

    git merge --squash origin/master

  • 指定したブランチを現在のブランチにマージする時、
    コミット全てのコミットを1つのコミットにまとめてマージする。

    ブランチ名:develop

    git merge --squash develop

  • git branch

    現在のブランチに既にマージされたブランチの一覧を表示する。

    ブランチ名:master

    git branch --merged master

  • 現在のブランチにまだマージされていないコミットが存在するブランチの一覧を表示する。

    ブランチ名:master

    git branch --no-merged master

  • 指定した名前のブランチを削除する。
    マージされていない変更やコミットが存在する場合は削除せずエラーとなる。

    ブランチ名:develop

    git branch -d develop

  • 指定したブランチを強制的に削除する。
    マージされていない変更やコミットが存在する場合も削除を行う。

    ブランチ名:develop

    git branch -D develop

  • git cherry-pick

    別のブランチにある指定したコミットを現在のブランチに直接取り込む。

    コミットID:COMMITID1

    git cherry-pick COMMITID1

  • 指定した始点のコミットから終点のコミットまでの範囲のコミットを現在のブランチに取り込む。

    コミットID:COMMITID1~COMMITID3

    git cherry-pick COMMITID1 COMMITID3

  • チェリーピックを行う際に自動でコミットせず、
    コミットの変更のみ作業ディレクトリに適用する。

    コミットID:COMMITID1

    git cherry-pick --no-commit COMMITID1

  • git switch

    現在のブランチから一時的に指定したコミットに戻る。
    移動したコミットからから元のブランチに戻るにはgit switchでブランチを指定する。

    コミットID:COMMITID1

    git switch -d COMMITID1

  • git restore

    ステージングエリアに登録されている指定したファイルの変更を取り消し、
    指定したコミットIDの状態にリセットする。

    コミット:HEAD(現在いるブランチの位置)、ファイル名:dir/file.txt

    git restore --source=HEAD dir/file.txt

  • git reset

    直前のマージやリベースの操作を取り消す。

    reset用の1つ前のコミット:ORIG_HEAD

    git reset --hard ORIG_HEAD

  • git log

    コミットグラフを表示する。

    git log --graph

  • 指定したユーザーが行ったコミットのみを表示する。
    ユーザー名はgit logなどから確認可能。

    ユーザー名:user_name

    git log --author=user_name

  • 指定したキーワードを含むコミットのみを表示する。

    キーワード:キーワード

    git log --grep=キーワード

  • コミットごとの変更の統計情報を表示する。

    git log --stat

  • git reflog

    ローカルリポジトリで実行された操作履歴のログを表示する。
    コミットやリセット、
    ブランチの切り替えなど過去に行った操作を表示し、
    コミットやリセットの復元にログを使用する。

    git reflog

  • すべてのリモートトラッキングブランチを含む操作のログを表示する。

    git reflog --all

  • git status

    ブランチ名を含む現在の作業ディレクトリとステージングエリアに登録されている状態を短縮形式で表示する(-bのみの場合、
    表示に変化なし)

    git status -sb

  • 現在の作業ディレクトリにある未追跡ファイルの状態を表示する(-bのみの場合、
    表示に変化なし)

    git status -u

  • 詳細な形式でステージングエリアに登録されている状態を表示する(作業ディレクトリの変更除く)

    git status -v

  • git diff

    指定した2つのコミット間の差分を表示する。

    コミット1:COMMITID1、コミット2:COMMITID2

    git diff COMMITID1 COMMITID2

  • 指定したコミットIDの状態と現在の作業ディレクトリの状態を比較し、
    差分を表示する。

    コミット:COMMITID1

    git diff -r COMMITID1

  • diffで比較元とするブランチと比較先ブランチを入れ替える(比較対象の変更前・変更後を入れ替える)

    git diff -R

  • 変更した行の数、
    情報を表示する
    git diff ブランチ名|コミット値 --name-only
    変更されたファイルのパスのみ表示

    git diff —stat

  • git show

    指定されたコミットの詳細情報(コミットのハッシュ値、
    コミットしたユーザー、
    日時、
    コミットメッセージ、
    変更内容)を表示する。

    コミットID:HEAD

    git show HEAD

  • git rebase

    現在のブランチのコミットのベースを、
    分岐元の指定したブランチ(通常はリモートブランチ)から取り込んだ最新コミットを、
    ブランチの先頭からリベースする。

    分岐元ブランチ:master

    git rebase master

  • 指定したブランチのコミットのベースを、
    分岐元の指定したブランチ(通常はリモートブランチ)から取り込んだ最新コミットを新たに分岐元としてブランチの先頭からリベースする。

    適用先ブランチ:develop、分岐元ブランチ:master

    git rebase develop master

  • 指定したブランチからrebase 時に発生したコンフリクトがあった際、
    コンフリクトを解消する修正をステージングエリアに登録し、
    rebaseの内容を反映する。

    git rebase --continue

  • ブランチをrebase時、
    コンフリクトが解消できない場合にコミットをスキップしてrebaseを続行する。

    git rebase --skip

  • ブランチをrebase 時、
    コンフリクトが解消できない場合にrebaseを中断する。

    git rebase --abort

  • git revert

    指定したコミットの変更を打ち消す新しいコミットを作成して適用する。
    コマンド実行後は指定したコミットの変更を変更前の状態に戻す変更が適用された状態となる。

    コミットIDはgit reflog、git logなどから確認可能コミットID:COMMITID1

    git revert COMMITID1

  • git stash

    作業ディレクトリの変更を一時的に退避し、
    作業ディレクトリを最新のコミット状態に戻す。
    変更はスタッシュとして保存される。

    v2.16.0以降でgit stash save コマンドは非推奨

    git stash push

  • スタッシュにコメントを指定して保存する。

    メッセージ:message

    git stash push -m "message"

  • 指定した番号のスタッシュした変更を取り出し、
    作業ディレクトリに反映する。
    取り出したスタッシュは削除する。
    スタッシュの番号を省略した場合、
    最後に退避したスタッシュを反映する。
    スタッシュの番号はstash listから確認可能

    スタッシュ番号:0

    git stash pop 0

  • 指定したファイルをスタッシュに保存する。

    ファイル名:dir/file.txt

    git stash push dir/file.txt

  • 指定した番号のスタッシュの変更を反映する。
    取り出したスタッシュは削除しない。
    スタッシュの番号を省略した場合、
    最後に退避したスタッシュを反映する。
    スタッシュの番号はstash listから確認可能

    スタッシュ番号:1

    git stash apply 1

  • スタッシュの一覧を表示する。

    git stash list

  • スタッシュの変更内容を表示する。
    "-p"オプションでファイルの変更箇所が確認可能。

    git stash show

  • 指定した番号のスタッシュを削除する。
    スタッシュの番号を省略した場合、
    最後に退避したスタッシュを削除する。
    スタッシュの番号はstash listから確認可能

    スタッシュ番号:0

    git stash drop 0

  • すべてのスタッシュを削除する。

    git stash clear

  • 保存したスタッシュから新しいブランチを作成し、
    新規ブランチの作業ディレクトリに変更を適用する。

    ブランチ名:develop

    git stash branch develop

  • git tag

    指定したタグ名で現在のコミットにタグを付けする。

    タグ名:v1.0

    git tag v1.0

  • 指定したタグを削除する。

    タグ名:v1.0

    git tag -d v1.0

  • git rm

    指定したファイルを削除し、
    ステージングエリアに追加する。

    ファイル名:dir/file.txt

    git rm dir/file.txt

  • ファイルを削除し、
    その変更をステージングエリアに登録する。

    ファイル名:dir/file.txt

    git rm dir/file.txt

  • ファイルをステージングエリアから削除する。
    作業ディレクトリ内のファイルは削除しない。

    ファイル名:dir/file.txt

    git rm --cached dir/file.txt

  • ディレクトリとその中のファイルを削除し、
    その変更をステージングエリアに追加する。

    ファイル名:dir/file.txt

    git rm -r dir

  • git clean

    作業ディレクトリから未追跡のファイルを削除する前に、
    未追跡のファイルやディレクトリの一覧を表示する。
    実際に削除は行わない。

    git clean -n

  • git remote

    指定したリモートリポジトリを削除する。

    リモートリポジトリ名:origin

    git remote remove origin

  • リモートリポジトリの詳細情報を表示する。

    リモートリポジトリ名:origin

    git remote show origin

  • git config

    指定したエイリアス名でコマンドをエイリアスとして登録する。

    コマンド名:checkout、エイリアス:co

    git config --global alias.co checkout

Gitコマンド学習ツールの使い方

当ページではgitコマンドの操作を実際にコマンド入力して学習できるWebアプリです。
作者の主観でよく使うコマンドを入門・基本レベルで分類して出題します。
出題するgitコマンドは一覧でも確認できます。
問題はgitコマンドのレベル別に一覧の中から出題され、レベルを選択時にランダムで出題されます。

Tools