Gitコマンド学習ツール
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 developgit 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コマンドのレベル別に一覧の中から出題され、レベルを選択時にランダムで出題されます。