gitであるファイルが特定の状態だった時を取り出したい
リポジトリに含まれているあるファイルを、gitの操作が不慣れな人に渡して編集してもらうみたいな案件がある。しかしそのファイルは開発チームでも触ることがありえるので、編集して戻してもらったファイルがマージ不可能みたいなことが往々にしてある。
ファイルを渡した時点でブランチを切って、そのブランチにコミットしてからマージとかすれば大体うまく行くんだけど、そのファイルを渡した時にそういうことをしてなくて困ることがあった。
幸いにして、渡した時点のオリジナルのファイルは残っていたのでgit log
から何とか見つけられないかと社内Slackで相談したところ、@motemenがシュッとワンライナーを書いてくれて流石であった。こんな感じ。
for c in $(git log --pretty=%H hoge.txt); do if [ "$(git cat-file blob "${c}:hoge.txt")" = "$(cat hoge.txt.orig)" ]; then echo $c; fi; done
git log
を素朴に回して比較しているがコレで十分であった。motemen++である。