[英]How do I make space for my code cave in a Windows PE 32bit executable
[英]How do I get Windows to leave the executable bit alone?
不幸的是,我有時被迫在 Windows PC 上工作。
當我檢查我的項目時, git status
立即說:
modified: bin/my_executable
git diff
說:
diff --git a/bin/my_executable b/bin/my_executable old mode 100755 new mode 100644
“哦,簡單”我想。 “Windows 只是剝離了可執行文件位。”
現在,在過去的 30 分鍾里,我一直試圖讓 Git 阻止它,而我即將遇到挫折引發的動脈瘤。 檢出文件不起作用:
$ git checkout bin/my_executable $ git diff diff --git a/bin/my_executable b/bin/my_executable old mode 100755 new mode 100644
硬重置,無效:
$ git reset --hard HEAD is now at 789abcd My last commit text $ git diff diff --git a/bin/my_executable b/bin/my_executable old mode 100755 new mode 100644
使用git update-index
切換可執行位不起作用:
$ git update-index --chmod=+x bin/my_executable $ git diff diff --git a/bin/my_executable b/bin/my_executable old mode 100755 new mode 100644 $ git checkout bin/my_executable $ git diff diff --git a/bin/my_executable b/bin/my_executable old mode 100755 new mode 100644
要求 Git 忽略可執行位更改不起作用:
$ git config --global core.fileMode false $ git diff diff --git a/bin/my_executable b/bin/my_executable old mode 100755 new mode 100644 $ git checkout bin/my_executable $ git diff diff --git a/bin/my_executable b/bin/my_executable old mode 100755 new mode 100644
這是一個完整的攔截器。 Git 甚至不會讓我在沒有首先“提交我的更改”的情況下彈出我的藏匿處。
有人可以幫忙嗎?
做完之后:
git config --list
我注意到core.fileMode
在本地設置為 true 。 我不知道這是怎么發生的,但這可能與項目目錄在 Windows 和 Linux PC 之間同步的事實有關。 不過,我多年來一直使用這個工作流程,但從未發生過這種情況。
簡而言之,這解決了我的問題:
git config --unset core.fileMode
編輯:根據對此答案的評論,簡單地core.fileMode
已經不夠了,因為默認值已更改為true
。 我無法驗證這一點,因為我不再使用 Windows 進行開發,但如果是這種情況,您可以手動將其設置為 false:
git config core.fileMode false
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.