2017/08/16

SourceTreeで「このコミットを打ち消し」をしたらエラーになったときの対処






取り消したいコミットを選んで右クリックから「このコミットを打ち消し」をしたらエラーになったので、対応策のメモ。

こんなエラーが出ました。
Gitに慣れてないのと急いでたのでかなり焦りました..。

git -c diff.mnemonicprefix=false -c core.quotepath=false -c credential.helper=manager-st revert --no-edit 45d661aea34a1ff3dd42af18aca6a2e8b360f9f1
error: commit 45d661aea34a1ff3dd42af18aca6a2e8b360f9f1 is a merge but no -m option was given.
fatal: revert failed
エラー終了しました。エラーの内容は上記をご覧ください。

やったこととしては、別ブランチで作業していたのをマージして、それを打ち消ししようとした感じです。

調べてみるとMergeしたコミットの場合は、親が複数(今回の場合2つ)あるので、親を指定しないとリバートできないようでした。

// これだとエラーになる。ソースツリーの「このコミットを打ち消し」と同じ意味のコマンド
$ git revert 45d661a

// 親を指定しないとエラーになる。
$ git revert -m 1 45d661a

1と言うのは、下の例で言うと「45d661ad6a」を指定していることになります。 左側から1, 2, 3・・・と数えます。
親: 45d661ad6a, ca21071dc0


SourceTreeでは、親が指定できなかったのでターミナルを開いて、コマンドを打ち込んで対応しました。
コマンド使ってないのでドッキドキでした。