Git の基本コマンド
初期設定
レポジトリ初期化コマンドの 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-ff
で merge
コミットを作り履歴を追いやすくする。
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 # 変更を戻した新しいコミットが作られる