Gitコマンドで特定のファイルだけ過去のコミットまで戻す方法


[ad#co-1]

ちくしょー!なんでこいつだけ変になってんだー!
他のファイルも同時にコミットしてしまってるし…
どうすりゃええんやあああああ

って時、ないですか?笑
筆者はと言うと、比較的よくあります。笑
「よく」ってのはよくないですよ?
もちろんそうなんですが、なんだかんだあるんですよね。
で、そういう時はどうすればいいのかを見ていきましょう。

まずは戻したいコミットハッシュ値を取得

まずは以下のコマンドをたたいて、戻したいコミットのハッシュ値を取得します。

git log (ファイルの相対パス)
// ファイルバスの例: src/main/java/jp/greed/app/logic/Greed.java

すると、以下のようなのが出てきます。

commit (コミットハッシュ値)
Author: mementomori(obata@mementomori.info)
Date: Tue Jun 21 08:49:33 2016 +0900

Initial Commit

一番下の「Initial Commit」はコミットコメントです。
commitの後に出てくるハッシュ値を今回は使います。
ここでよくあるのは、コミットハッシュ値をresetとかするんですが、今回は少し異なります。

[ad#co-2]

resetでなくcheckout

なんでチェックアウトなんですかね?
知ってる方がいましたら教えてください。笑

そして、以下のコマンドを叩くとコミットハッシュ値の場所までそのファイルのみ戻ってくれます。

git checkout (コミットハッシュ値) (ファイルの相対パス)

後は今まで通りにcommitしてpushすればokです。
すると、新たに戻したというコミットが積まれます。
要はrevertの特定のファイルみたいなもんです。

あまり、皆さんは使う機会はないかもしれませんが、覚えておいて損はないかなとおもいます。


Tags: