入門Git 第6章

Gitのログを調べる

  • git log -p
    • 差分も一緒にログと表示してくれる

リビジョンの範囲指定

  • git log —since=“5 hours”
    • ここ5時間のコミットだけをみる
  • git log —before=“5 horus"
    • 5時間以前のコミットのみを表示する
  • “2015-01-01”や、”1 minute”のような指定も可能
  • git log revision1..revision10
    • revision2からrevision10を表示する(revision1は表示されない)
  • git log revision1..HEAD

    • revision10が最新のリビジョン出会った場合↑と同義
    • HEADは省略可
  • ^(キャット)

    • マイナス1の意味。
    • 9a234643d34^ は9a234643d34の前にあるリビジョンを指す
    • 9a234643d34^^は2つ前のリビジョン
  • ~N
    • 9a234643d34~2は9a234643d34から2つ前のリビジョン

誰のしわざか

  • git blame file_name
    • ファイルの行ごとに誰がコミットしたのかがわかる
  • git blame -L 12,13 hello.html
  • hello.html 12,13行目の情報のみを表示
  • -L 12, +2のようにしても上記と同じ指定が可能(マイナスを使用することもできる)
  • git blame -L "/<\/body>/",+2 hello.html

自分の準備の整ったものだけを共有することは、完全な分散型開発の真価のひとつ

コミットを修正する

  • git commit -C HEAD —amend
    • -Cは新しいログメッセージを渡す代わりに指定したコミットのログメッセージを使うということ
    • この例ではコミットの指定はHEADにしているが、なんでもいい

コミットを取り消す

  • git revert -n HEAD
    • -n を使用することですぐにコミットしないでステージして状態で待ってくれる

変更をリセットする

  • git reset
    • リポジトリを好きな状態にリセットできる
    • パラメータを指定しないと、HEADが指定されたとみなされる
  • —soft
    • 以前のコミットをすべてステージングエイラに戻してコミットされていない状態に戻す
  • —hard
  • git reset --hard HEAD^
    • 上記までを踏まえた具体例
    • HEADの手前のコミットへリセットされる。リポジトリにもないし、どこにもコミットはなくなる

履歴を書き換える

履歴の書き換えが有益なケース

  • 履歴をより整合性のある順番にする
  • 複数のコミットをひとつに圧縮する
  • ひとつのコミットを複数に分割する

  • git rebase -i

    • このまわりは重いので再度インプットしたい感がある