簡體   English   中英

如何讓 Windows 單獨保留可執行位?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM