2012-09-07 8 views
271

私は同僚によって作成された.diffファイルを持っており、そのdiffファイルにリストされている変更をまったく同じリポジトリのローカルブランチに適用したいと考えています。私は、このdiffファイルを生成するために使用されたワーカーのPCまたはブランチにアクセスできない。git diffファイルはどのようにして、同じリポジトリのコピーであるローカルブランチに適用しますか?

明らかに、私は行ごとに行を変えてすべてを再入力することができましたが、システムに人為的なエラーを与えないようにしたいと思います。これを行う最も簡単な方法は何ですか?その後、

答えて

406

コピーリポジトリのルートにdiffファイル、およびない:applyコマンドについて

git apply yourcoworkers.diff 

詳しい情報はits man pageで利用可能です。

ところで、コミット全体をファイルで交換するより良い方法は、送信者のコマンドgit format-patchと受信者のgit amの組み合わせです。これはまた、著者情報とコミットメッセージも転送するためです。

パッチアプリケーションが失敗し、diffが生成されたコミットが実際にリポジトリにある場合は、の-3オプションを使用して変更をマージしようとします。

次のようにまた、Unixのパイプで動作します:返信用

git diff d892531 815a3b5 | git apply 
+1

おかげで、それはパッチが失敗した、というエラーを発生させた:filename.php:202エラー:filename.php:パッチが適用されませんが。良いニュースは、ファイルの最初のファイル名ではなく、少なくともファイルの一部を処理できることです。何かご意見は? –

+1

また、パッチの動作を停止するファイルの変更があるようです。これを解決するには、変更をコミットし、新しいブランチを作成し、あなたと同僚が分岐したコミットにリセットし、パッチを適用してコミットし、2つのブランチをマージします。 – Philipp

+0

このファイルがdiffファイルを使用するために存在していたものとあまりにも異なっていました。私は先に進んで手作業で行ったが、正しいコマンドで+1した。これが正解であったはずだと私は受け入れるだろう。 –

関連する問題