2013-05-15 152 views
22

git am -3を使用して1 gitリポジトリから別のgitリポジトリに一連のパッチを適用しようとしています。パッチ1から4までの順で適用します。"git am -3"を使ってパッチを適用するとエラーメッセージ "fatal:sha1 information is lacking or useless"が表示される

5回目のパッチになると、「致命的:sha1情報が欠落しているか役に立たない」というエラーが表示されます。 gitが "sha1情報が不足しているか、役に立たない(dev/afile.c)"という不満があるのはなぜですか?問題を解決できますか?

$ git am -3 ~/Tmp/mypatches/0005-fifth.patch 
Applying: rpmsg: Allow devices to use custom buffer allocator 
fatal: sha1 information is lacking or useless (dev/afile.c). 
Repository lacks necessary blobs to fall back on 3-way merge. 
Cannot fall back to three-way merge. 
Patch failed at 0001 first patch 
When you have resolved this problem run "git am --resolved". 
If you would prefer to skip this patch, instead run "git am --skip". 
To restore the original branch and stop patching run "git am --abort". 

なぜ「パッチが0001の最初のパッチで失敗した」と言われたのですが、「git am -3〜/ Tmp/mypatches/0005-fifth.patch」を実行するとエラーなしで完了します。

ありがとうございます。

+0

この問題を引き起こしたパッチにアクセスすると、おそらく役に立ちます。 – Chronial

答えて

10

0001-で始まるパッチファイルは完全には適用できません。いくつかの競合があります。

Gitは、このパッチの基になっているコミットを見て、このコンフリクトを解決したかったのですが、そのコミットはリポジトリにはありません。

パッチは、一度も共有されていないコミットを持つブランチから作成されたか、またはあなたの投稿者のブランチがリベースされている可能性があります。

パッチ0005-はエラーなしで適用できます。エラーは具体的には約0001-です。

+3

これは本当にコメントでなければなりません。 – Mrchief

9

プロジェクトでサブモジュールを使用していますか?

更新サブモジュールは、エラーメッセージで失敗するリベース(またはパッチ)引き起こす1.8.1.2にgitの1.7.12にはバグがありました:

致命的な:SHA1の情報が不足しているか、役に立たないが

適用されている場合は、コミットは空のままです。

詳細情報here。バージョン1.8.4へのgitの更新

は私が間違っている枝上のパッチしばらくを作成しようとしたとき、私は、この問題に遭遇したこの問題

+0

サブモジュールなしでも発生します。 – kenorb

3

を解決します。

"git format-patch ..."と書いてあったのは、format-patch呼び出しでメインブランチとパッチブランチを指定できるからです。私はパッチしていたサイトに存在しなかったブランチの一部であるコミットについて言及していたので間違っていたことに気付きました。

短い話ですが、パッチを作成するときにパッチを適用するブランチにいることを確認してください。

関連する問題