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