AR ホームベーカリー

オイラのアウトプット用ホームベーカリー!

git 履歴から過去のファイルを (コミット ID を指定して) とりだす

CMS 的な作業領域ではない場合、たとえば View 側の修正で以下のようなコミットを積んだことがある人は多いと……多いと思いたい。

*  <555555> 2025-07-28 11:45:14 [donbulinux]  (origin/update-inquiry_pages-text, update-inquiry_pages-text) お問い合わせページの文言を222222 時点に戻した  # <- これ
*  <444444> 2025-07-21 11:45:14 [donbulinux]  お問い合わせページの文言を更に新規で追加
*  <333333> 2025-07-14 11:45:14 [donbulinux]  お問い合わせページの文言を新規で追加
*  <222222> 2025-07-07 11:45:14 [donbulinux]  お問い合わせページの文言を修正
|
*  <111111> 2025-07-01 00:00:00 [donbulinux]  (origin/master, origin/HEAD, master) Merge pull request #114514 from example/senpai>
|

この時、いままでは git checkout などで取り出していたのだけど、現代の git においては以下でよかった。

❯ git restore --source=${対象のコミット ID} -- ${対象のファイル}

これをコミット ID 222222 の app/views/inquiry.html.slim を対象にすると以下のようになる。

❯ git restore --source=222222 -- app/views/inquiry.html.slim

# git status すると分かる通り、対象のファイルがステージされる前になっているので、 add -> commit -> push と操作すればよい
❯ git add app/views/inquiry.html.slim
❯ git commit -m "お問い合わせページの文言を222222 時点に戻した"
❯ git push origin update-inquiry_pages-text

checkout する作法をいつも忘れていたのだけど、スッといけたので今後はこれでいいか。

参考

zenn.dev