Git 應用補丁報錯 「sha1 information is lacking or useless」

由於現場代碼在客戶局域網內,不能鏈接到公司網絡,因此通常更新的時候都是打補丁, 而後在客戶現場應用補丁,可是最近在應用補丁的時候出現了以下問題:git

...
fatal: sha1 information is lacking or useless (config.xml).
...

這裏使用的 GitExtension 的圖形化界面管理版本庫,進行補丁的生成和應用, GitExtension 默認使用 3way-merge 來應用補丁,生成和應用補丁的命令以下:shell

# 生成補丁
> git format-patch -s (commit_id)
# 應用補丁
> git am --3way --signoff 0001.patch

解決辦法:

總的來講就是強制應用補丁,手動解決文件問題,而後在繼續應用補丁便可緩存

  • 執行 git am --3way --signoff --reject 0001.path 命令應用補丁, 並將補丁中不可應用的部分保存在 *.rej 文件中,例如:以上面的報錯信息來講, 就會多出來一個 config.xml.rej 文件來標識不可應用的部分網絡

  • 根據 *.rej 文件修改沒有應用徹底的文件,我在處理的時候就比較生猛, 直接刪除 *.rej 文件,而後將修改後的文件覆蓋app

  • 而後將須要提交的文件添加到緩存區 git add ... ,由於應用補丁的過程基本就是修改文件, 添加文件到緩存區,提交修改,因爲修改文件的時候產生過了錯誤, 因此應用補丁過程就停在了修改文件環節,再繼續執行時咱們就須要將須要提交的文件添加到緩存區less

  • 最後執行 git am --continue 來繼續執行補丁的應用便可url

以上,既是 sha1 information is lacking or useless 的解決辦法, 後經同事指導,還有更加生猛的辦法... ...直接將版本庫 .git 拷貝過去覆蓋... ....net

參考連接:code

http://stackoverflow.com/questions/25846189/git-am-error-patch-does-not-applyorm

相關文章
相關標籤/搜索