Git で過去の特定のコミットの中の特定のファイルの変更を現在のワークツリーにマージする
2024-02-13
1分で読了
更新: 2025-12-14
目次
結構レアなケースだと思うのですが、今日そういうシーンに遭遇したのでメモとして残しておきます。
今日のケース
今日発生したケースは、
- develop ブランチからトピックブランチを切ってAファイルとBファイルを修正(コミットZとする)
- そのまま develop にマージすることなく放置
- develop ブランチには他のトピックブランチの修正がいくつもマージされていった
- 1 のトピックブランチを develop にマージしようと思ったがAファイルのコンフリクトがひどくてマージが大変
という状況で、じゃあ現在の develop ブランチから改めてトピックブランチを切って、そこに B ファイルの修正だけマージしよう、となったわけです。Aファイルの修正は特に必要がなくなったので。
コマンド
これを解決するには、まずは develop から新たにトピックブランチを切ってチェックアウトします。
そして、以下のコマンドで解決です。
git checkout <コミットZのハッシュ> -- 相変わらず Git はよくできてるなぁと思った瞬間でした。