gitコマンド#

よく使うコマンド、調べたことあるコマンドなどをメモ。

■ローカルの変更を元に戻す

・特定のファイルを戻す
git checkout <ファイル名>
・全てを戻す
git checkout .

■変更をcommitせずに退避する

・スタックに退避
git stash
・スタッシュに名前を付ける
git stash save <スタッシュ名>
・スタックから戻す
※意図しないブランチでうっかり実行すると、悲惨なことに...
git stash pop
・stashを削除する
git stash list ※一覧表示
git stash drop stash@{0} ※listで表示したstash@{0}を削除
git stash clear ※全部を削除

■ブランチ作成

git checkout -b <作成するブランチ名>

■ブランチ削除

・HEAD にマージしたブランチを削除する
git branch --delete <削除するブランチ名>
・マージしていなくても強制的に削除する
git branch -D <削除するブランチ名>
・リモートブランチ hoge を削除する
git push --delete origin hoge

■ブランチ名変更

git branch -m <古いブランチ名> <新しいブランチ名>

■addの取り消し

git reset HEAD <addを取り消したいファイル名>

■直前commitの取り消し

git reset --soft HEAD^
※オプションの意味は下記。
・--softオプション:ワークディレクトリの内容はそのままでcommitだけを取り消す
・--hardオプション:commit取り消した上でワークディレクトリの内容も書き換える
・HEAD^:直前のcommit。
・HEAD~{n} :n個前のcommit

■pushの取り消し

git revert HEAD
git push origin HEAD

■rebase

git rebase <新しい派生元>

■rebase前に戻す

git reflog
--------------------------------------
94677f475 (HEAD) HEAD@{0}: rebase (continue) (finish): XXXXX
94677f475 HEAD@{1}: rebase (continue): XXXXXXX
6cd481228 HEAD@{2}: rebase (continue): XXXXXXX
b43e2b915 HEAD@{3}: rebase (start): XXXXXXX
cb0a55a4e HEAD@{4}: checkout: moving from XXXXX // <- rebase 開始前のココ戻りたい
--------------------------------------
git reset --hard HEAD@{4}

■commit指定でチェックアウト

※commitIDは、git log などで確認する
git checkout <commitID>

■マージ

git checkout <マージ先ブランチ>
git merge <マージ元ブランチ>

■マージ取り消し

・コンフリクトしたので編集せずに、マージをやめる場合
git merge --abort
・コンフリクトしたので編集したけど、マージをやめる場合
git reset --hard ORIG_HEAD
・マージ済みのコミットを取り消す場合
git revert <対象のコミットNo>
※以下のエラーが返ってきたら、-mオプションと 1 をつけて再度実行。
error: commit 96f46cdcdcf2c16136eb501d7d757f28eaeba60f is a merge but no -m option was given
fatal: revert failed

git revert -m 1 96f46cdcdcf2c16136eb501d7d757f28eaeba60f

■CherryPick

・他ブランチの特定commitのみを取り込む場合に使用する
git cherry-pick <commitID>

■パッチ作成

・コミット前の修正をパッチファイル化
git diff > diff.patch
・現在のブランチとmasterとの差分をパッチファイルとして抽出
git diff master > diff.patch
・patchファイルの適用
patch -p1 < diff.patch
git apply test.patch