我很遗憾被迫在部分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只是剥离可执行位。"
现在我一直试图让Git在过去的30分钟内停止它并且我即将沮丧地引发了动脉瘤。签出文件不起作用:
$ 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甚至没有让我弹出我的藏品而不是第一次"提交我的更改"。
有人可以帮忙吗?
答案 0 :(得分:2)
完成后:
git config --list
我注意到core.fileMode
在本地设置为true。我不知道这是怎么发生的,但它可能与项目目录在Windows和Linux PC之间同步这一事实有关。多年来我一直没有使用过这个工作流程。
简而言之,这解决了我的问题:
git config --unset core.fileMode