参考動画
はじめに
エンジニアになってからGitでトラブルはよくあります。そんな時に対処できるコマンドを見事にまとめてくれました‼︎
この動画の内容を使いやすくて、よく使いそうなものの順で書きます。
(自分が使ったことあるのを優先で書きます)
コミットを間違えた時
- 直前のコミットをなかったことにする(取り込まれていないなら)
git reset --soft HEAD^
HEADでインデックスを元に戻す
git reset HEAD~
HEAD、インデックス、ワーキングツリーを元に戻す
git reset --hard HEAD~
- 指定したコミットを打ち消すコミットを作成(取り込まれているなら)
git revert コミットのハッシュ値
- 直前のコミットに上書き
コミットのメッセージを間違えた時に使えます。
git commit --amend
あとgit rebase失敗した時、コンフリクトを避けるためにコミットを上書きに使うみたいです。
ブランチ名を間違えた時
これよくやっちゃいますよね😅
リモートブランチとローカルブランチでやり方違うのでまとめてみました。
- ローカルブランチ名の変更
git branch -m ブランチ名
git branch -m 古いブランチ名 新しいブランチ名
- リモートブランチ
# ローカルのブランチ名を変更
git branch -m 古いブランチ名 新しいブランチ名
# 変更したブランチを新たにリモートへpush
git push -u origin 現在のブランチ名 // $ git push -u origin HEAD とするとブランチ名を入力しなてもpushできるので便利です。
# 間違えてpushしたリモートブランチを削除
$ git push origin リモートのブランチ名
作業中に緊急対応しないといけない時
git stash
ブランチを切り替えて作業。作業後、ブランチを元に戻す。
git stash pop
stash知らない場合はこちらをご覧ください。
マージしたけどコンフリクトしまくるので元に戻したい
git reset --hard ORIG_HEAD
誤ったコミットをpushしてしまった
git push origin ブランチ名
git reset --hard コミット
git push origin ブランチ名
ブランチを間違えて消してしまった
git reflog
git branch ブランチ名 コミット
コミット間違えて消してしまった
git reflog
git reset --hard <コミット>
別のブランチにコミットしてしまった
git branch 別ブランチ
git reset --hard HEAD~
git switch 別ブランチ
余計なファイルをコミットしてしまったのでignoreしたい
- Gitの管理から削除するなら
git rm --cached <ファイル名>
echo '<ファイル名>' >> .gitignore
- ファイルを履歴から消すなら
git filter-branch -f --index-filter 'git rm --cached -rf --ignore-unmatch <ファイル名>' HEAD
違うユーザー名でコミットしてしまった
.gitconfigか .git/configでユーザー名を変更します。
HEADのユーザー名、メールアドレスを変えたい時
git commit --amend -m "コミットメッセージ" --author "user.name <user.email>"
例えばこんな感じ
ex)
git commit --amend --author="Correct Name <correct.email@example.com>"
リリース後バグがあったので、すぐに切り戻したい
git log
git revert -m | マージコミット
切り戻したあと再マージできないとき
git revert 打ち消したコミット
git merge ブランチ名
参考資料