gitお悩み相談室

こんにちは、浦本です。
今日はgitコマンドに関する素朴な疑問について、Q&A形式でまとめてみました。

【Q】 編集がパーになるのが怖くてcheckoutできません。どうしたら良いでしょうか?
【A】 checkoutに-pを付けましょう。確認メッセージが表示されます。


$ git checkout -p ファイル名


編集をそのまま残したい箇所ではnを、
編集をパーにしてよい箇所ではyをタイプします。

【Q】 addしたらdiffに何も表示されなくなりました。どうしたら良いでしょうか?
【A】 diffに--stagedを付けましょう。コミット待ちのdiffが見れます。


$ git diff --staged
あるいは
$ git diff --cached

【Q】 commitの前に毎回diff --stagedを叩くのが面倒です。どうしたら良いでしょうか?
【A】 commitに-vを付けましょう。diffも一緒に確認できます。


$ git commit -v

このオプションを付ける習慣を身につけておけば、
「デバッグコードが1年前のcommitに紛れていた・・・」なんていう最悪の事故を防ぐことができます。
もはやチーム内で義務化してしまったほうが良いと言えます。

【Q】 編集途中のファイルを半分だけcommitしたいです。どうしたら良いでしょうか?
【A】 addに-pを付けましょう。編集箇所ごとにaddできます。その後commitします。


$ git add -p ファイル名

checkout -pのときと同様に確認メッセージが表示されます。
addする箇所ではyを、
addしない箇所ではnをタイプします。

【Q】 diffの表示範囲が狭くてどこをいじったか分かりません。どうしたら良いでしょうか?
【A】 diffに-U9999を付けましょう。ファイル全体を見渡せます。


$ git diff -U9999

【Q】 分岐・マージの様子を知りたいです。どうしたら良いでしょうか?
【A】 logに--graphを付けましょう。分岐・マージが可視化されます。


$ git log --graph --oneline


コンパクトな表示にするため、--onelineも付けています。
※この画像はSymfony 2のgitリポジトリを例としています。

【Q】 logを見てもどのファイルが編集されたのか分かりません。どうしたら良いでしょうか?
【A】 logに-pを付けましょう。diff付きでログを見れます。


$ git log -p

【Q】 映画けいおん!が観れるかどうか心配です。どうしたら良いでしょうか?
【A】 チケットのご予約はお早めに。

以上となります。