Git で過去の特定のコミットの中の特定のファイルの変更を現在のワークツリーにマージする

2024-02-13
1分で読了
更新: 2025-12-14

目次

結構レアなケースだと思うのですが、今日そういうシーンに遭遇したのでメモとして残しておきます。

今日のケース

今日発生したケースは、

  1. develop ブランチからトピックブランチを切ってAファイルとBファイルを修正(コミットZとする)
  2. そのまま develop にマージすることなく放置
  3. develop ブランチには他のトピックブランチの修正がいくつもマージされていった
  4. 1 のトピックブランチを develop にマージしようと思ったがAファイルのコンフリクトがひどくてマージが大変

という状況で、じゃあ現在の develop ブランチから改めてトピックブランチを切って、そこに B ファイルの修正だけマージしよう、となったわけです。Aファイルの修正は特に必要がなくなったので。

コマンド

これを解決するには、まずは develop から新たにトピックブランチを切ってチェックアウトします。

そして、以下のコマンドで解決です。

git checkout <コミットZのハッシュ> -- 

相変わらず Git はよくできてるなぁと思った瞬間でした。

この記事をシェア

この記事を書いた人

Roy Okuwaki

「かたつむりくんのWWW」を運営している Roy Okuwaki(tinybeans)です。bit part 合同会社 代表社員。2007年から、Movable Type や Craft CMS などの CMS、Web 開発、AI ツールの使い方について書いています。

プロフィールを見る →

関連記事