2013-06-27 14 views
14

パッチファイルがあります。git:パッチに有効な電子メールアドレスがありません

このパッチをgitリポジトリの自分のコードに適用したいと思います。

私がサブバージョンを使用したとき、このプロセスは非常に簡単でした:右クリック - > tortoise svn - >パッチを適用します。それはいつも期待通りに機能します。

しかし、私はgitを使ってこれを行うことはできません。 Gitは私のパッチを適用しません。文句なし

パッチには有効な電子メールアドレスがありません。

私の質問は次のとおりです。 "この状況ではどのようにパッチファイルを適用しますか?"

答えて

9

Gitで作成したパッチは、Gitツ​​ールで適用することを意図しています。

git apply <patch> 

パッチがGitで作成されていない場合は、Gitの背後にあるパッチプログラムを使用してください。多くの場合、これはプログラム「パッチ」です。

patch <patch> 

パッチを適用した後、いつものようにGitを追加してコミットします。

+1

このコマンドは正しく動作しません。私は迷った電子メールに関するgitの不平を上に書いた。 – tmporaries

+0

Gitでパッチを作成しましたか? – GoZoner

+0

いいえ。これはtortoise diff viewerによって生成される「統一された」パッチ形式です。 – tmporaries

1

コマンドラインの代わりにグラフィカルインターフェイスを使用すると便利です。パッチを適用するなど、Gitで多くのことを行うのが比較的簡単なツールがいくつかあります。私が見つけた最も有用なものはSourceTreeですが、あなたが検索すると他の素晴らしいものがあることは間違いありません。

5

これは多くのオープンソースプロジェクトで使用されているパイパーメールからダウンロードされたmboxファイルで動作します。これはおそらくOPのケースでは機能しませんが、git ampipermailというメッセージ/パッチで抽出した場合と同じ症状/質問が表示されます。


ファイルのバックアップを作成し、行を追加し、それを編集し、

From: [email protected] (Proper Name) 

は、多くの場合、行がすでに存在するが、アンチスパム機能がテキストに@記号を変換したかもしれません。あなたは、これは単なる@記号で「で」を置き換える、GNU sedコマンドなどで

sed -ie 's/\(From:.*\) at /\[email protected]/' *.patch 

をたくさんのファイルにパッチを適用することができます。その後、git amはそれを受け入れる必要があります。これが最後の変更のパッチで4つのファイルを作成します

  1. git checkout oldbranch
  2. git format-patch HEAD~4


    あなたが定期的にコマンドを使用することができますgitリポジトリへのアクセス権を持っている場合は、(の番号を変更しますあなたの場合)。

  3. git checkout master
  4. git am *.patch

後で役立つことができ、リモートリポジトリと同じコミットIDS、メッセージなどを取得します。 gitkkdiffよう


ツールは、NOTフォーマットパッチと同じデータを生成しないと、あなたは、コミットの歴史を得ることはありません。この種のデータがある場合は、上記のようにgit applyを使用するか、パッチを生成する必要があります。

参照:Difference between git format-patch and git diff

+0

.patchファイルに電子メールアドレスを追加した後、gitはSHAハッシュがないことについてうそをつきます。私はGoZonerの答えを試してみると思います。 –

+0

私は自分のローカルレポを持っています。そのリポジトリには、1年前に外国のプロジェクトからいくつかのソースコードがコピーされていました。その間、そのプロジェクトは更新されました。私のローカルレポも更新されました。私は外国の改善を取り入れたい。最新のバージョンを古いブランチにコピーし、すべての違いを示すことで、私は外国のプロジェクトに加えられた変更のパッチを作りました。私はまだ私の地元のレポにこの統一されたdiffを適用するツールを見つけていません。 –

+0

最終的にkdiff3でやったけど、以前作成したパッチは使っていません。 –

1

コミットメッセージにFrom:で始まる行がある場合、このエラーが発生する可能性があります。例えば、私がタイプミスを修正パッチを有し、コミットメッセージのボディに私が持っていた:フォーマットパッチによって生成

Fixes a typo. 
From: 873524cab1 "Introduced some bug on this commit" 

.patchファイルファイルがあった一方が2本のFrom:ラインを有していました電子メールアドレス、そしてもう1つは私の悪いメッセージでした。 Git amは2番目のFrom:行をピックアップし、電子メールアドレスを検索しようとしていました。

コミットメッセージを変更して、行頭にFrom:がないようにしました。

関連する問題