はじめに
いわゆる n番煎じ
業務で使うコマンドの中でも特に気に入ってるものを並べました。
初心者から、中級者向け?だと思います。
コマンドを覚えると開発がより楽しくなると思います。
あんなこともできるこんなこともできる、できるが増えるって素晴らしいですね。
便利コマンド
差分をステージングエリアに追加する
git add -p
役立ち度:★★★★★
基本的に、このオプションでしか add はしない。
差分を取り消す
git checkout {FILE_NAME}
git checkout # 全部なかったことに。
git checkout -p # もある
役立ち度:★☆☆☆☆
時々使うけど、結構危険だと思う。
ステージングエリアから戻す(add する前に戻す)
git reset {FILE_NAME}
git reset # 全部戻す
git reset -p # もある
役立ち度:★★★☆☆
コミットしようとした時に、「あれなんでこいついるの?」ってなった時に使う
コミット前には必ず git status
しましょう。
指定したユーザーのコミットログを見る
git log --committer={USER_NAME}
重要度:★★☆☆☆
怪しい人を見つけた時に。
コミットIDを指定して、中身を確認する
git show {COMMIT_ID}
重要度:★★★★☆
怪しいコミットがあった時に。
pull したらコミットをたくさん取り込んだ時によく使う。
別のブランチからファイル/コミットを持ってくる
git checkout {BRANCH_NAME} {FILE_NAME}
git cherry-pick {COMMIT_ID}
役立ち度:★★★☆☆
別のブランチの作業者が作った共通部品を盗みたい時に。
直前のコミットを修正する
git commit --amend # コミットメッセージも変えられる
git commit --amend --no-edit # vim をスキップ
役立ち度:★★★★☆
「この差分もこのコミットに乗せたい」という時に。
ファイル名の変更
git mv {OLD_NAME} {NEW_NNAME}
役立ち度:★★★★★
普通にエクスプローラーから名前をすると delete と create になってしまう。
これでファイル名を変更するとログに変更が残るから嬉しい。
(これもオプションがあるわけじゃないけど、意外と使ってる人が少ない...。のでランクイン)
特定のファイルの歴史を確認
git log -- {FILE_NAME}
git blame {FILE_NAME}
役立ち度:★★★☆☆
blame の方が有名だけど、 log で見るのも便利な時がある。
マージ済みのブランチの確認
git branch --merged
git branch --no-merged # その逆
役立ち度:★★★★☆
削除して良いローカルブランチを見つける。
直前のブランチを指定して〇〇
git checkout - # ブランチ切り替え
git merge - # マージ
役立ち度:★★★★★
ひょっとしたら一番便利かもしれない。
ブランチ名が長くて打ってらんない時に。
ブランチ名を忘れちゃった時に。
マージしたらコンフリクトしたのでなかったことに
git merge --abort
役立ち度:★★★☆☆
他の人に聞かないと解消できない時に。
ざっくりした差分をみる
git diff --stat
役立ち度:★★★☆☆
ファイル名と、そのファイルが何行変わったかだけを表示
ステージングエリアの差分を見る
git diff --cached
立ち度:★★★★☆
直前のコミットと、ステージングエリアとの差分を見る。
add + commit を連結して考えてると不要。(結構危険な考えです、やめましょう)
あれ?これコミットしたら何がリモートに上がっちゃうんだろう、と気になって見てください。
##ネタ系
コミット数のランキング
git shortlog --summary -n
楽しさ:★★★★☆
努力を誰となく認められたい時に。
Git はあなたのコミット数を見てくれてます。
最後に
どうでしょうか。
git command でもっと楽しもうって気になれましたでしょうか。
CLI での git 操作ができるようになるともっと楽しく開発ができるかもしれません。
僕は楽しいです。
結構便利コマンド多いなって思います。
shell環境整えたら git command を愛する人になったので、たくさん知りたいです。
「これも使いなよ」っていう、とっておきのコマンドがあったら教えてください。
おまけ
僕の git の alias を晒します
$ git config --list | grep alias
alias.b=branch
alias.s=status
alias.co=checkout
あんまりたくさん作ってもしょうがないかな派です。
ありがとうございました。