UnxUtils patch.exe要求管理員權限的原因是由於其名稱。微軟選擇自動承擔稱爲「安裝」或「修補程序」的程序,或者在描述資源中使用這些字詞時,應該要求管理員權限。要禁用該功能,您需要一個指定所需權限的清單。您可以在與patch.exe文件相同的目錄中添加一個名爲「patch.exe.manifest」的清單文件來定義此文件。或者您可以將其嵌入爲清單資源。我有以下作爲清單:
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity version="1.0.0.0" processorArchitecture="X86" name="patch.exe" type="win32"></assemblyIdentity>
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
<security>
<requestedPrivileges>
<requestedExecutionLevel level="asInvoker" uiAccess="false"></requestedExecutionLevel>
</requestedPrivileges>
</security>
</trustInfo>
</assembly>
這並沒有真正觸及爲什麼你有在Windows上應用補丁的問題。我在我的系統上使用core.autocrlf = true,並且不會遇到櫻桃挑選或git am問題,或者應用所有使用補丁來應用更改。 Git for Windows附帶的補丁版本已經通過了許多測試,應該可以正常工作。可能你直接使用補丁,也許使用'git apply'來應用補丁文件可能會更好?
你正在處理什麼類型的補丁?如果它們足夠用於'git am',那麼您可以使用它(可能使用'--keep-cr'選項,具體取決於您的Git設置)。但根據我的經驗,這對於什麼是有效的和什麼不是很嚴格。 – hvd 2014-10-02 11:04:14
git am看起來不像在git倉庫之外工作。這就是我需要應用該補丁的地方。 – ygoe 2014-10-02 13:06:04
你說得對,在這種情況下,這是行不通的。你從來沒有真正說過你正在使用Git倉庫,所以我不適合不仔細閱讀這個問題,但它可能是值得編輯的問題,以防止其他人犯同樣的錯誤。 – hvd 2014-10-02 13:16:45