为什么Git跟踪子目录中没有变化?

时间:2012-01-27 14:43:32

标签: git github

我已经创建了git存储库,添加了代码并将其推送到GitHub。

然后在本地,我编辑了文件Eila.Analyser/Program.cs,在第一次提交时添加到GitHub,保存了它,git status说没有变化。

好吧,我认为,一定搞砸了,git reset --hard HEAD,据我所知,应该还原所有内容,但我的文件不会被还原。

所以我觉得我做错了什么。我编辑根文件夹中的文件git status - 显示有更改,工作为可疑,因此它适用于根文件夹中的文件,但不适用于子文件夹。

我错过了一些明显的东西吗?

更新:证据,我正在编辑的文件真的被提交(git log --stat):

enter image description here

如果有帮助,树图片:

enter image description here

UPDATE2:好的,我以为我真的搞砸了,所以我删除了文件夹,我的解决方案在哪里,再次从gitHub克隆,我的本地代码仍然与gitHub中的现有代码不同,git status看不到任何变化, git log origin/master..HEAD什么都没有。

10 个答案:

答案 0 :(得分:11)

尝试运行git update-index --really-refresh

我确实在Windows上遇到了类似的问题并解决了这个问题。

您还应该使用core.ignoreStat检查git config选项。

答案 1 :(得分:9)

所以最后它奏效了。我删除了本地文件夹中已更改的文件 - 然后突然git status开始看到这些文件丢失了。所以我已经恢复它们并且git status开始看到,文件被修改了。

答案 2 :(得分:6)

有时我遇到同样的问题,特别是当我有子文件夹时,这是另一个git repo本身。解决方案是:重命名文件夹。尝试将文件夹名称切换为其他名称。提交,然后重命名。 如果子文件夹本身是另一个Git仓库,并且您希望它完全脱离主流,并按照您的仓库,则应首先删除该子文件夹的远程文件。

答案 3 :(得分:3)

对我来说,解决方案是

重命名未跟踪的文件夹

答案 4 :(得分:1)

我的案子正是提摩西所说的。我有一个也是git repo的子文件夹。我从子文件夹中删除了git,但“父git”已停止对其进行跟踪。通过Windows资源管理器重命名文件夹不能解决问题,但通过git重命名可以解决问题。 因此,我做了'$ git mv folder-name folder-name-temp'..比重命名回其原始名称:)

答案 5 :(得分:0)

对我来说,问题是我的.gitignore文件中有一个不存在的文件名。从.gitignore删除此无效的文件名解决了该问题。另外,我从子目录中删除了所有.gitignore文件,只保留了顶级.gitignore文件。

答案 6 :(得分:0)

PROBELM(以我为例)
执行git checkout -b <branch_name>无效,尽管位于gitlab服务器上,但该分支中的文件夹和文件在本地仍然不可见。

解决方案
在该分支中然后在本地复制了最后一次提交的SHA哈希:

git checkout -b <branch_name> #SHA Hash

现在我看到了预期的子目录和文件。

答案 7 :(得分:0)

我遇到了同样的问题,但是意识到我的问题是高层的忽略。 我忽略了.php文件,因此无法更改.php文件中的任何内容

答案 8 :(得分:0)

我试过 git update-index --really-refresh 并重命名文件夹,但没有成功。这虽然有效:

  • 复制文件夹
  • 删除原来的
  • 将复制的文件夹重命名为原始名称

答案 9 :(得分:-1)

我遇到了同样的问题。 Giedrius的解决方案也适用于我;我删除了整个目录并重新添加了它。这解决了问题