おそらくはそれさえも平凡な日々

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++である。

created at
last modified at

2015-04-18T23:29:18+0900

comments powered by Disqus