Search by

    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-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    # 変更を戻した新しいコミットが作られる

    Published under  on .

    smile-0yen

    I'm smile-0yen. An SRE working in Tokyo, Podcaster at rehash.fm