#chiroito ’s blog

Java を中心とした趣味の技術について

困ったときのGitコマンド集

自分がGitで困ったときに使ったGitコマンドをここに日々追加していきます。

困ったときに使うもの

よく分からなくなってリモートに変なのを送ってしまった。

リモートを強制的に上書きする。他人が触らない、自分だけのブランチで実行しよう。

git push -f origin <戻したい位置>:<ブランチ>

とか

git push -f <ブランチ>


ローカルで良く分からなくなったから、どこかまで戻したい。

  • --soft:コミットだけが消える。ステージと作業ディレクトリはそのまま
  • --mixed:コミットとステージが消える。作業ディレクトリはそのまま(デフォルト)
  • --hard:全部消える
git reset --soft<戻したい位置>


親ブランチの更新を子ブランチに反映

ブランチが分岐する位置が変わる。マージコミットをすると怒られる OSS で使う。

#子ブランチにいる状態で
git rebase <親ブランチ名>


コミットに含めるのを忘れたりした時に追加する

コミットしたらタイポに気付いたり、CI回して忘れ物に気付くときに使う。

# ファイルの修正や、git add でファイル追加を事前に実行
git commit --amend --no-edit


複数のコミットを1つにする (squash)

git commit --amendを忘れたりするときに使う。エディタが開いて、まとめるものを指定する。1行1コミットで表示される。

まとめたいものが離れている場合は、その行を切り取って入れ替えられる。 そのままにしたいものはpickのまま、まとめたいものはsにする。sにすると、その上のpickにまとめられる。

git rebase -i <まとめたいコミットの1つ以上前のコミット>


パッチの適用を元に戻す

Gitではないけど、パッチを適用したことをなかったことにする。

patch -R -p0 < <パッチファイル>


なんか、やらかしちゃった?

作業ログを見て確認

git reflog


なかったことにする

うっかりしたコミットしたときにコミットをなかったことにする。 次にちゃんとコミットしたときに、「ちゃんとしたコミット・無かったことにしたコミット・うっかりしたコミット」をsquashするとよい。

git revert <コミット>



普段からよく使うもの

git checkout .
git status
git add <ファイル>
git commit -m "メッセージ"