Edited at

Gitでよくあるハプニングの対策とコマンドメモ

More than 1 year has passed since last update.

自分用の逆引き対策メモとして作りました。

他にも困っている人の役に立てたら嬉しいなぁ。


間違えて必要なファイルを消しちゃった

git checkout HEAD [ファイル名]

コミット前ならこれで復活できる


masterにコミットしちゃった


■ローカルにとどまっている場合


新しいブランチを切って回避


  • 新しいブランチを切って、そのまま変更を連れて行く

git checkout -b [新規ブランチ名]


  • 一回コミットしてしまったブランチの方は、リセットをしてリモートと状態をあわせておく

git reset --hard


■pushしてしまった場合


  • まずは深呼吸する


  • エンジニアを召喚する


    • このとき、何をしていて、どんな状態になったかを端的に共有する

    • そしてどうなって欲しいかを、端的に伝える

    • 擬音で表現しないように気をつける




masterにマージした時にコンフリクトする

地道にコンフリクトを解消していく


  • まずはdiffでコンフリクトしている箇所を確認する

git diff


  • 確認して、修正対応できたら、add

git add


コミットをなかったことにしたい

git reset --hard HEAD^


すでにあるコミットをまとめたい

git  rebase -i [コミットID]


作業したファイルをコミットせずに破棄したい

git reset --hard

新規作成ファイルだとこれだけじゃ消えないので注意


特定のcssや文章がどこに書いてあるのか見つけたい

git grep [検索したいワード]


便利なオプション


  • 私がよく使うオプション


    • -n : 対象の行番号も表示する



あとはhelp叩くか、下記参照


HEADの位置を過去に移動したい

git checkout [コミットID]


差し込み案件のbranchの扱い方


  • 新しいbranchをどこからきるのかが重要


コミットし忘れた変更を、一つ前のコミットに混ぜたい

git commmit --amend


コミットメッセージにtypoを見つけたからなおしたい

git commmit --amend


branchが遅れすぎてて、うまくマージできない

git rebase [リベース先のbranch名]

次のフォースPushもも覚えるといいけど、難しいところもある。

マージ運用のメリットと一緒に、またそのうちメモ追加したい


ローカルとリモートのbranshの歴史が変わって、pushできなくなった

 git push -f [リポジトリの名前] [ブランチ名]


ローカルのbranchを破棄して、リモートのbranchを再度取り込みたい


  • 違うbranchに移動

  • ローカルのbranchを削除

  • リモートのbranchにcheckout


カレントのbranchを切り替えずに、リモートのmasterをとりこみたい(リリースされたbranchに乗っかりなおしたい)

git pull --rebase


変更したbranchの一部だけ、別のbranchに持ってきたい

git cherry-pick


一瞬違うブランチを見に行きたいけど、変更ファイルがあるよって怒られる

git stash


■stashの付属コマンドたち


1)stashしたものが複数あって、リストを見たい時

git stash list


2)戻す時

git stash apply [stashのリストナンバー]

最新だったらリストナンバーは省略可


3)リストから消す時

git stash drop [stashのリストナンバー]

最新だったらリストナンバーは省略可


4)リストから消す時その2

git stash pop [stashのリストナンバー]

最新だったらリストナンバーは省略可


stagingからおろしたい

git reset HEAD [ファイルパス]