困った時は

まず、困った時とはどういう時でしょうか。 Gitで重要なのは、今のブランチの状況を完全把握しておくことです。 今どのブランチにいて、master との分岐点はどこで、どんなコミットが伸びてて、remoteはどうなってて、そういう感じの状況を脳内で可視化できなければいけません。 もしそれができてない場合、たぶん大丈夫・・・という楽観論でそのまま進むと、多くの場合大事故になります。

gitk

今どういう状況か把握できてない場合、先に進まず現状把握を最優先します。 gitk という、コミットツリーをGUIで表示してくれるツールがあります。 まず、現状のブランチの状態やコミットを知るために gitk を使いましょう。

コミットツリーが表示され、ブランチやタグが指している場所がひと目で把握できます。 それぞれのコミットの内容も確認することができます。 いろいろなGitの操作もでき、個人的にはcherry-pickはこのツールで行うのが便利だと思います。

git reset

git reset は現在のブランチが指すコミットを、任意のコミットに変更するコマンドです。 例えばブランチを切らずに master に間違ってコミットしてしまった場合、このように修正することができます。

$ git reset origin/master

master ブランチが origin/master と同じになり、さっき間違えてコミットした変更点が未ステージの状態で残ります。

他にも、例えばいくつかコミットを重ねたものの、一部の変更点を抜いてプルリクエストしたい場合などにもよく使います。

$ git reset master
$ git add -p
# 必要な部分だけステージ
$ git commit
$ hub pull-request

こうすると、必要な部分がプルリクエストされ、抜きたかった部分は未ステージ状態で残ります。

--hard のオプションをつけると変更点も全部ぶっ飛ばしてくれて、綺麗サッパリ元の状態に戻ります。

cp

言わずと知れたコピーのコマンドです。 わけがわからない状態になった時、一番簡単に頼れるのはGitの機能ではなく慣れたOSの機能です。 いったん変更したファイルを別ディレクトリに退避し、 git reset --hard origin/master を実行すれば、とりあえず何もかもが解決します。

Last updated