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