以下のコマンドで見れます。
# ただ見る
$ git show <hash>:<abslute-file-path>
# 詳細に見る
$ git blame <hash> -- <file-path>
上記にあるようにファイルパスはともかく、ハッシュ値は取得しないといけません。
だたn年、n月、n日前のコミットハッシュを見る
以下のコマンドは、ある日時以前の一番最初のログを取ります。
-1
=> 最初の1つだけ表示--format='%h'
=> 短いハッシュ値だけ表示--before=...
=>...
以前から表示
git log -1 --format='%h' --before=midnight # 今日の0時0分以前
git log -1 --format='%h' --before='2017.12.31' # 2017年12月31日以前
git log -1 --format='%h' --before=1.day # 今から1日前
git log -1 --format='%h' --before=yesterday # 〃
git log -1 --format='%h' --before=1.week # 今から一週間前
git log -1 --format='%h' --before=10.day # 今から10日前
git log -1 --format='%h' --before=1.month # 今から1ヶ月前
git log -1 --format='%h' --before=1.year # 今から1年前
あるファイルのn行を変更した時点のコミットハッシュを見る
以下は100行目の変更時点のハッシュを表示します。
-L1, 10
=> 例えば1行目から10行目まで表示
git blame -L100,100 a.txt | cut -d ' ' -f 1
使用例
例えば、「ある時点のsrc/a.txt」の中身を見たいとしたら、こんな感じにします。
# bash zsh
git show `git log --before=10.week -1 --format='%h'`:src/a.txt
# 行番号付き
git show `git log --before=10.week -1 --format='%h'`:src/a.txt | less -N
# fishならこっち
git show (git log --before=10.week -1 --format='%h'):src/a.txt
中身をblame
で見たい場合はこうして。
# bash zsh
git blame `git log --before=10.week -1 --format='%h'` -- a.txt
# 一個前のコミット
git blame `git log --before=10.week -1 --format='%h'`^ -- a.txt
# fish
git blame (git log --before=10.week -1 --format='%h') -- a.txt
ある行の変更時点のファイルの内容をただ見るなら。
# bash zsh
git show `git blame --minimal -L30,30 a.txt | cut -d ' ' -f 1`:src/a.txt
# fish
git show (git blame --minimal -L30,30 a.txt | cut -d ' ' -f 1):src/a.txt
blame
で見る。
# bash zsh
git blame `git blame --minimal -L30,30 a.txt | cut -d ' ' -f 1` -- a.txt
# fish
git blame (git blame --minimal -L30,30 a.txt | cut -d ' ' -f 1): -- a.txt
思ったこと
Gitってすごい(忘れちゃう😇)