【问题标题】:git, checkout is not removing the filegit,结帐没有删除文件
【发布时间】:2020-07-30 13:25:05
【问题描述】:

我不明白为什么 git checkout filename 不起作用。

这里是步骤。首先,在终端中:

现在git status:

我得到了一堆被修改的文件。当我尝试将这些文件中的每一个都发送到checkout 他们时,我得到了这个(我将做一个只有 2 个文件的示例):

一切似乎都很好,但是当我执行git status 时,我可以在modified 列表中再次看到这些文件:

所以,我不明白。唯一想到的是另一个 exe 每时每刻都在读写这些文件,但为什么不是其他文件呢?我在src/public 下有很多文件。如果我重新启动(Windows)也会发生这种情况,我尝试的第一件事就是(不打开 IDE 或其他)如果我删除这些文件,我将从分支中删除,我不能这样做,我只是想要将它们删除为modified。有什么想法吗?

编辑:根据@VonC 的回答,我最后一次尝试是:

274  git restore transpiler.sh
275  git config --global core.autocrlf false
276  git checkout transpiler.sh
277  git restore transpiler.sh
278  git checkout -- transpiler.sh
279  git checkout transpiler.sh
280  git status

文件还在...

【问题讨论】:

  • git checkout <filename> -- 工作吗?
  • 什么意思,只有 1 个文件?啊,--,让我检查一下
  • 是的,一个接一个,用--
  • 或者按照 CLI 中的建议使用 git restore <file1> <file2>
  • 不,是一样的

标签: git


【解决方案1】:

如果git restore aFile 问题仍然存在(这比git checkout -- aFile 更容易,以避免指定检查aFile 是一个文件,而不是一个分支),然后检查你的配置

git config core.autocrlf

我更喜欢确保将其设置为 false,以避免任何自动 eol(行尾)转换。
然后再次尝试git restore + git status


OP pmiranda 指出in the comments 指向自动更改的另一个原因:core.filemode,即I explained here

告诉 Git 是否尊重工作树中文件的可执行位。

补救办法是:

git config core.filemode false 

这样可以避免:

old mode 100755 
new mode 100644

【讨论】:

  • 谢谢,我会测试的。 git config core.autocrlf 返回true。也没有用。如何设置core.autocrlf false?
  • 我在问题的末尾发表了评论,不适用于 falserestore
  • @pmiranda 您的存储库中有 .gitattributes 吗?结帐时可能会有更改这些文件内容的指令。
  • 不,我没有那个文件,我有这个:i.imgur.com/Xk48uGk.png(我不能引用你的名字)
  • @pmiranda git diff 为这两个文件返回什么?
猜你喜欢
  • 2013-09-22
  • 2016-09-09
  • 1970-01-01
  • 2012-08-09
  • 2018-12-02
  • 2020-01-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多