1分でわかるGitで間違えて○○したときに使用するコマンド

1分でわかるGitで間違えて○○したときに使用するコマンド

間違った名前のブランチを作成した

git branch -m 【正しいブランチ名】

でブランチ名を変更する。

間違ったブランチをプッシュした

git push origin :【削除するブランチ名】

のようにブランチ名の頭に:(コロン)を追加すればプッシュしたブランチを削除できる。

間違ってaddした

git reset

で戻す。

間違ってコミットした

git reset --soft HEAD^

で戻す。

※Windowsでは^は特殊記号なので”HEAD^”のように囲む

最新のコミットの状態に戻す

git reset --hard

コミットメッセージを間違えた

git commit --amend

でメッセージを修正。

コミットし忘れたファイルがあった

git add .

で追加したあと

git commit --amend

で再度コミット。

ファイルを間違えて削除した

git checkout 【削除したファイルパス】

ファイルを間違えて削除してコミットした

git rev-list -n 1 HEAD 【削除したファイルパス】

で【commit識別番号】が表示されるのでこちらを指定して戻す。

git checkout 【commit識別番号】 【削除したファイルパス】

ブランチを間違えて削除した

git reflog

で過去の作業を表示したら戻したいHEADの番号を指定して

git branch 【削除したブランチ名】 HEAD@{番号}

で戻す。

stashを間違えて削除した

git fsck

で削除したstashのcommit識別番号を探して

git cherry-pick -n -m1 【commit識別番号】

でインデックに適用後に

git stash

で再びstashに保存。

間違えてコンフリクトマーカーを入れた

コンフリクトマーカーとはコンフリクト時に含まれる<<<<<<< HEADのようなテキストのこと。

目視で発見した場合は手動で削除後、念のためほかに残っていないか下記のコマンドで調べる。

git diff --check

間違えて修正してコミットしたコンフリクトした

例えばfooをbarに修正してコミットしたが実は修正する必要がなく、さらに別の人がfooをbazに変更してプッシュしたものをプルすればコンフリクトとなる。

その際、以下のような状態となる。

<<<<<<< HEAD
<h1>bar</h1>
=======
<h1>baz</h1>
>>>>>>> ab8251f642ea97ea1262adec505b62d60986b8ac

この際、git checkout –theirsで相手の修正内容を適用できる。

git checkout --theirs
<!-- git checkout --theirs の結果 -->
<h1>baz</h1>

逆にgit checkout –oursで自分の修正内容を適用できる。

git checkout --ours
<!-- git checkout --ours の結果 -->
<h1>bar</h1>

間違えて特定のファイルの修正を別ブランチで行った

hogeブランチでfoo.txtを修正しようと思ったが間違えてfugaブランチのfoo.txtで行ってしまった場合はhogeブランチから

git cherry-pick 【commit識別番号】

で該当コミットをhogeブランチに取り込む。

ただし、fugaブランチでfoo.txt以外にもbar.txt, baz.txtを修正している場合はこれらを取り込んでしまう。

そのため、この場合はcheckoutを下記にように実行して修正したファイルだけを取り込むようにする。

git checkout fuga -- foo.txt

備考

commit識別番号の内容が不明の場合は

git show 【commit識別番号】

で内容を確認する。

GitのコマンドやオプションはGitポケットリファレンスがわかりやすいのでおすすめ。

カテゴリーgit