gitコマンドユースケース
よく質問されるコマンドやたまにしか使わないので忘れやすいコマンドをメモ
ブランチを新規作成したい
# ベースになるブランチに切り替える
git checkout ${base branch}
# 新規作成
git checkout -b ${branch name}
ファイルがいつ削除されたか確認したい
git log --diff-filter=D --summary
指定したキーワードを含む修正がいつされたか確認したい
git log -p -S${keyword}
一時的に変更を退避したい
# 退避
git stash
# add前のファイルも退避
git stash -u
# 退避した一覧を見る
git stash list
# 直前の退避を戻す
git stash pop
# 退避した変更を反映
git stash apply # 全て
git stash apply stash@{ID} # ID指定
# 削除(直近)
git stash drop
特定のコミット(*)を今のブランチに反映したい
(*)リモートブランチに存在していること
git fetch
git cherry-pick -rn ${commit hash} # commitしない
masterをマージしたい
git fetch
git merge origin/master
Fast-Forwardできればする。できなければNon Fast-Forward(マージコミットが作られる)
常にマージコミットを作りたい場合
git merge --no-ff origin/master
常にFast-Forwardしたい場合(できない場合はエラーになる)
git merge --ff-only origin/master
コンフリクトしたファイルをマージ元(マージ先)の変更だけ反映したい
# チェックアウトしているブランチの変更を反映
git checkout --ours ${file}
# マージもとのブランチの変更を反映
git checkout --theirs ${file}
マージを取り消したい
git reset --hard ORIG_HEAD
addを取り消したい
git reset HEAD ${file}
Untracked filesを消したい
# 削除対象ファイルの確認
git clean -n
# 削除対象ディレクトリの確認
git clean -nd
# ファイル削除
git clean -f
# ディレクトリ削除
git clean -fd
一部のファイルやディレクトリだけ別ブランチから取得したい
git fetch
git checkout ${branch} ${directory/file}
直前のコミットメッセージを修正したい
git commit --amend
コミットを取り消したい(履歴は残す)
git revert ${commit hash} -n # commitしない
# プルリクのマージをリバートしたいとき
# -m ${N} 1: マージされた側のブランチ , 2: マージする側のブランチに戻す
git revert -m 1 ${commit hash} -n # commitしない
間違ってPUSHしてしまった変更を取り消したい
※ブランチを破壊してしまう可能性もある危険なコマンドなので注意
# ログ確認
git log --oneline
# 指定コミットまで戻す
git reset --hard ${commit hash}
# force push
git push origin ${branch} -f
プルリクのcommit履歴を消したい
※ブランチを破壊してしまう可能性もある危険なコマンドなので注意
# ログ確認
git log --oneline
# 指定コミットまで戻す
git reset --soft ${commit hash}
# force push
git push origin ${branch} -f
# ローカルには変更が残っているので必要に応じて再commit & push
ローカルのコミットを取り消す
# ログ確認
git log --oneline
# 指定コミットまで戻す
git reset --soft ${commit hash}
# stagから下げる
git restore --staged <file>...