当たり前の事なんだけど、gitでcommitする前はきちんとgit statusして変更したファイルを確認し、必要なファイルだけをコミットするということをきちんとしないといけない。
当たり前の事なんだけど。
だけど、余りわかっていない初心者はとりあえず
git add .
して、
git commit -m 'commit message'
しちゃう。あるいは、この二つのコマンドを一気に
git commit -am 'commit message'
みたいなことをする。
もちろんstatusみたりもするけど、ふ~んみたいなかんじでスルーしちゃう。
まあ全部私の事なんですけど。
なんでかっていうと、言い訳だけど、初心者がやるチュートリアル的なもの
Ruby on Rails Tutorial
とか
RSpec の入門とその一歩先へ~RSpec 3バージョン~
とかがそんな感じでやってるから。
もちろん、これらはgitの使い方を学ぶものではないから、仕方がないんだけど、きちんと一回gitの勉強はしないとねと。
最近は学習して、
git status
でmodifiedファイルを確認。Ruby on Railsをやってたりすると、bundle installしたときにGemfile.lockとかも書き換わってる時があるので、それらはaddしないようにする。
git add file.rb
する。
それで、私の場合、一旦diffを見る。
addしない場合だと、
git diff
だけで見れるけど、addしたもののdiffを見るときは、
git diff --cached
で見ることができる。ここで間違いがないかを確認する。間違いがあればそのファイルを修正してもう一度addする。
間違いがないことを確認したら、
git commit -m 'commit message'
でコミットする。-amはなるべく使わない。
一旦addしたものを取り消したいなら、
git reset
を使う。commitする前だったらこれでaddを取り消せる。
commitしてしまったら、
git reset --soft HEAD^
を使って直前のコミットを取り消す。resetのオプションに--softならファイルの変更は取り消されない。コミットだけ取り消される。
オプションが--hardの場合はファイルの変更まで取り消されるので注意。ただ、gitにはこれもまた戻す方法がある。
自分の場合、今の所--softしか使う機会はないけど。