あなたが探しているのは「ベンダーブランチ」です。このコードで作業し、ベンダーの更新を独自のパッチとマージしたい場合は、次の方法で簡単に実行できます。
git checkout -b vendor # create a vendor branch and check it out
それは一度限りのことです。ベンダーブランチとそのブランチには、サードパーティベンダーからの更新のみが含まれます。ベンダーブランチで作業することは決してありません。ベンダーのコードのクリーンな履歴が含まれています。「ベンダー」という名前には魔法はありません。私の用語はCVSから引き継がれています。
次に、ベンダーからの最新バージョンをそこに配置します。
find . -not -path *.git* -and -not -path . -delete # delete everything but git files
dump the 3rd party code into the project directory # I'll leave that to you
git add . # add all the files, changes and deletions
git commit -a -m 'Vendor update version X.YY' # commit it
git tag 'Vendor X.YY' # optional, might come in handy later
ベンダーが削除したものをgitが確認できるように、最初にすべてを削除します。削除を確認し、移動されたファイルを推測するgitの機能により、この手順はSubversionよりもはるかに簡単になります。
ここで、開発に戻り(マスターを想定しています)、ベンダーの変更をマージします。
git checkout master
git merge vendor
通常どおり、競合に対処します。これで、パッチが適用されたバージョンがベンダーに更新されました。通常どおりマスターで作業します。
次回ベンダーから新しいバージョンがある場合は、手順を繰り返します。これは、gitの優れたマージを利用して、ベンダーの変更に合わせてパッチを最新の状態に保ちます。