ステージング(インデックス)の取り消し
ワークツリーは修正されない。
git reset HEAD
ワークツリー、ステージング共に取り消し
git reset --hard HEAD
特定のコミットまで巻き戻しも可能
git reset --hard <commit id>
Untracked fileの削除
# 削除されるUntracked fileを確認
git clean -n
# 削除実行
git clean -f
# ディレクトリごと削除する場合
git clean -df
gitの追跡対象外にする
ワークツリー(ローカル環境)にはファイルが残る
# ファイル
git rm --cached <ファイル名>
# ディレクトリ
git rm -rf --cached <ディレクトリ名>
ステージングの内容を直前のコミットに戻す
ワークツリーは修正されない
git checkout HEAD -- [ファイル名]
git rm
で削除したファイルを復元する
直前のコミットからファイルを引っ張ってきて、反映する仕組み。
2ステップ必要
-
git resetコマンドを使う
※git reset
はgit add
の取消以外にも使える - git checkoutでファイルを復元
※git checkoutは指定したコミットのファイル内容を展開する機能も持ってる
ステップ1(不要なケースもある)
git reset HEAD <削除したファイル>
# or
git reset <削除したディレクトリ>
ステップ2
git checkout HEAD <削除したファイル名>
ワークツリー、インデックス、リポジトリからファイルを完全に削除
※追跡対象外(.gitignoreで定義したconfigfileとか)のファイル(ディレクトリ)を指定するとローカル環境からも完全に削除されるので注意
git rm <ファイル名> [-n(対象ファイルの確認)]
git rm -r <ディレクトリ名> [-n(対象ディレクトリの確認)]
直近のコミットメッセージの書き換え
git commit --amend
過去のコミット履歴を追う
git log
# グラフで表示する(複数指定可能)
git log --graph --decorate HEAD origin/main
# 特定のファイル修正のコミットを追う
git log -- file名
# diffも同時に表示する(先の--fileと組み合わせるとファイルの修正履歴を追いやすい)
git log -p
差分表示するときに特定のディレクトリを除外
# :(exclude)【除外したいpathのパターン】
# testディレクトリが除外される
git diff master -- ':(exclude)*/test/*'