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 する作法をいつも忘れていたのだけど、スッといけたので今後はこれでいいか。