あるプロジェクトで使ったMakefileを別のプロジェクト(別リポジトリ)でも使用したいシーンがあった。
普通にコピーをするとコミット履歴が失われてしまうので、Makefileのコミット履歴を保ったまま別のリポジトリの空ブランチに移動したい
やりかた
元々のリポジトリでパッチを作成する.
git format-patch --root -o [出力ディレクトリ] -- [対象ファイル名]
git format-patch --root -o /tmp/patchs -- ./Makefile
取り込み先のリポジトリに移動する
cd ../target
空白のブランチを作成する
git checkout --orphan new_branch
パッチを適応する
git am /tmp/patchs/*
トラブルシューティング
fatal: previous rebase directory .git/rebase-apply still exists but mbox given.
エラーが出たときは、前回のパッチが残ってしまっている
git am --abort
コマンドで最初からやり直すことができる
# エラー内容
$ git am /tmp/patches/*
fatal: previous rebase directory .git/rebase-apply still exists but mbox given.
# リセット
$ git am --abort