初期設定

レポジトリ初期化コマンドの git init は冪等性が保たれているので何回実行しても問題ない。

git init

設定の確認。

git config -l

環境のクリーンアップ

まずは環境をきれいに。 リモートレポジトリと同期した上でブランチ dev を使う例。

git fetch --all --prune # prune オプションでリモートに存在しないブランチを削除
git checkout dev
git reset --hard origin/dev # pull は fetch + merge なので reset の方が確実
git clean -f # 余計なファイルを消す

もし残しておきたい変更があるなら stash に working treeの内容を退避させておく。

git stash
git reset --hard origin/dev
git stash apply

過去の変更を確認する

--statによりどのファイルが何行変更されたかの記録を確認できる。

git log --stat

-pによりコードの変更を表示することができる。

git log -p # p は patch の意

--graph でブランチの merge 履歴がわかりやすく表示される。

git log --graph --oneline

特定のコミットログを確認するには show。直前のコミットなら ID は省略可。

git show <commit ID>

ファイル変更後の確認

diffはデフォルトではステージされていない変更を表示する。

git diff

ステージされた変更と直近のコミットを比較したい時は --staged を指定する。

git diff --staged

ファイルごとにステージするかを確認するには -p をつける。

git add -p # review patches

コミットを指定して差分を確認することも可能。

git diff origin/master..HEAD <file>

手元で merge するときは --no-ffmerge コミットを作り履歴を追いやすくする。

git merge --no-ff
git push origin HEAD:dev

ロールバック

ステージしていない場合

git checkout <file> # 直近の状態に戻る

ステージしてしまった場合は reset でステージから除く

git reset HEAD <file> # 特定のファイルだけ指定のコミットへ戻す。

すでにコミットしている場合

git commit --amend # Hash は変わるのでリモートへの push 前にしか使わないこと!
git revert HEAD    # 変更を戻した新しいコミットが作られる