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