入門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の手前のコミットへリセットされる。リポジトリにもないし、どこにもコミットはなくなる
履歴を書き換える
履歴の書き換えが有益なケース