【问题标题】:Git sees duplicated modified fileGit看到重复的修改文件
【发布时间】:2015-08-31 04:54:03
【问题描述】:

在我的存储库中有一个文件(总是那个)总是给我带来麻烦。
我正在使用咖啡脚本并使用 grunt 任务生成 js。
好几次git status告诉我这个文件被修改了,需要添加。问题是 git 看到这个文件 duplicated:

好的..所以我尝试使用git add :/ 添加所有文件,并添加所有文件,包括AreaChart.js 的一份副本,而另一份保留modified 并且未暂存。如果我尝试手动 checkoutadd 它,没有任何反应,它的状态仍然是 modified 并且未暂存。

这是一个 git 错误吗?我该如何解决这个问题?

编辑
实际上 git 看到同一个文件有 2 个不同的文件名,即 AreaChart.jsAreachart.js
如果我 ls 我只会看到 AreaChart.js(大写 C),因为它应该是。

提示:
如果我添加AreaChart.js(大写C)--> git 添加Areachart.js(小写c
如果我添加Areachart.js(小写c)--> git 添加Areachart.js(小写c

EDIT2

  1. 我发现这两个文件都存在于存储库中
  2. 令我惊讶的是,我发现我的文件系统 (mac) 不区分大小写,所以如果我 touch testtouch Test 只创建一个文件(或者可能两者都创建,但我只能看到其中一个)
  3. 输出git config core.ignorecasetrue

【问题讨论】:

  • 这些文件名实际上是不同的:第二个有一个小写的“c”。您是,还是其他开发人员,在 Windows 上工作?
  • 你可以试试git add -A :/,它可以记录添加删除,以考虑生成过程中可能的大小写变化。
  • @Chris 你是对的,但是目录中的ls 告诉我只有一个存在,大写 C:AreaChart.js 的那个应该是,所以看到的是 git 2 个文件!
  • 我对这两个文件名和不断变化的c进行了编辑
  • git config core.ignorecase 的输出是什么?

标签: git git-add git-status


【解决方案1】:

再仔细看看

AreaChart.js 

Areachart.js

是不同的文件。一个是大写的 C,另一个是小写的 c。

由于 Git 区分大小写,而您的文件系统不区分大小写,因此您只会在文件系统上看到其中一个。如果您只希望在 Git 中使用一个,则应使用 git rm --cached Areachart.js 删除另一个,并确保通过 git add AreaChart.js 添加您的更新。

【讨论】:

  • 你的仓库在 github 上吗?如果是这样,我可以尝试下载它。
  • @Leonardo 我不确定你在说什么“不”。你试过这个吗?如果您只想要一个在您的存储库中,则需要删除另一个(例如git rm --cached Areachart.js
  • @EdwardThomson git rm --cached Areachart.js 解决了这个问题,但ls -a 再次向我展示了一个现有文件,即大写的那个。你能把这个作为答案吗?
  • 还假设您将两个文件添加到 git。然后从文件系统中删除一个。 Git 将向您显示 2 个文件,但您的文件系统只有 1 个,除非您也将其从 git 中删除或从 got 中签出以将其取回。您的情况可能偶然发生了类似的事情
  • 好的,这仍然不是解决方案,对不起..我试图再次修改原来的AreaChart.coffee,然后在编译它之后git不断(随机)看到两个不同的js文件,有时只有一个(正确的)文件。同样,在我的文件系统中,我只有一个 AreaChart.js
【解决方案2】:

在不区分大小写的文件系统上会感到困惑。试试:

git mv --force Areachart.js AreaChart.js

【讨论】:

  • mac 应该是类似 unix 的大小写敏感的,不是吗?
  • 不,遗憾的是默认情况下不是
猜你喜欢
  • 1970-01-01
  • 2014-02-26
  • 2018-04-23
  • 2016-03-16
  • 1970-01-01
  • 1970-01-01
  • 2016-07-19
  • 2018-12-28
  • 2011-01-28
相关资源
最近更新 更多