gitでよく使うコマンド(たまに更新)

なんとなく使っていたgitコマンドたちを最近commitやmergeをする前に意図を持って使うようになったのでよく使ってるコマンドを整理しました。
※ ちょくちょく更新していきます。

Commands

remoteのmasterを取ってくる時

作業ブランチからmasterにcheckoutして最新の状態に戻すときに、追跡されてないファイルとかを削除してブランチの状態をきれいにしてからmergeします。

追跡されてないファイルを確認する

git clean -n

追跡されてないファイルを削除する

git clean -f

追跡されてないファイルとディレクトリを削除する

git clean -fd

これをするとvendorディレクトリなどの依存ライブラリを管理しているディレクトリも削除してしまうので、改めて入れ直す必要があります。

pullする

癖でmaster出し git pull をいつも使ってましたが、最近は予め fetch origin master してから merge origin master するようにしてます。

remoteのmasterの状態とlocalのmasterの状態が異なってしまうときにどのファイルでコンフリクトが起きそうなのかを予めlocalにmergeする前にわかっておくと、誰がいつなんで変更したファイルなのかを知ることができます。
resolve conflict というcommitメッセージを極力残さないように注意するようになりました。

remoteにpushするとき

差分を確認する

コードを変更したらまず意図した差分かを確認します。

git diff

これだけでHEADの状態とlocalの作業ブランチの状態を比較します。

ただ、具体的なコードレベルの差分よりも、commit前になったら差分があるファイル一覧だけ欲しい時があります。

git diff --name-status HEAD

これで差分があるファイル一覧を確認します。

新規ファイルを作成したりしたときは

git status

で意図したファイルが作成されているかをcommit前にかならず確認します。

indexに登録する

手癖で git add . を使って一括でHEADに上げることをしていました。
ただ、これだとよくわからないファイルを上げてしまったり、予期してなかった変更を上げてしまうことが増えてしまって、レビュー時に指摘されてしまったりということが増えてきました。

そのため 一括で HEAD に登録する git add . をやめました。

commitするときは diff --name-status HEAD を確認したファイルをindex登録します。 この時できるだけ細かい粒度でaddするようにはしています。 ※ めんどくさいと git add -A でaddすることもあります、

最近知ったんですが、 -p オプションなるものがあるらしく対話形式で厳密にファイルを index に登録していくことができるらしいです。

git add -p .
# diffが表示
Stage this hunk [y,n,q,a,d,e,?]?
# yを選ぶと index に登録される。

a を選ぶと残りを全てindexに登録してくれます。

再度差分を確認する。

add し終えたら再度差分を確認します。

git diff --cached

commitする

commitメッセージ注意するくらいかな。最近はGUIでsquash and mergeすることが増えてきたのでとりあえず適当に書いておいてあとで直せばいいや、くらいのノリでいますが。

add + commitを一度に行う

git commit -a

commit メッセージを書くときにどのファイルがindexに登録されているかもすぐに分かって良さみがある。最近一番良く使う。