无法摆脱我本地git中的非分页文件

时间:2016-06-07 07:18:41

标签: git github

签出分支(主)和git pull后,我有两个文件显示为已修改,我无法摆脱。

我已尝试过所有内容(git stashgit checkout .git resetgit reset --hardgit reset --hard HEAD)。

即使再次删除并克隆项目,运行git status也会始终显示文件。

我该怎么办?这是git状态的结果:

Mahans-MacBook-Pro:finance-service-platform Mahan$ git status
On branch master
Your branch is up-to-date with 'origin/master'.
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

    modified:   tests/Mocks/Models/CarInsurance/PackageMock.php
    modified:   tests/mocks/Models/CarInsurance/CarSubmodelMock.php

no changes added to commit (use "git add" and/or "git commit -a")

这也是我的.gitignore内容:

/vendor
.env
apidoc.json
docs/*
.phpintel/
.idea

3 个答案:

答案 0 :(得分:1)

我认为这里的问题是你在Mac上使用不区分大小写(但保留大小写)的文件系统,而git是区分大小写的。

这意味着在git repo中,有可能只有大小写(路径)名称不同的文件,但在文件系统中不可能有这些名称。结果是当你签出提交时,其中一个文件不可避免地会覆盖另一个,除非文件相同,否则git将总是在结帐时看到修改后的文件。

解决方案不是这样做:如果您可能不得不使用不区分大小写的文件系统,则永远不要使用名称不同的文件。

解决问题:

  1. 将repo克隆到具有案例敏感文件系统的系统上(Linux或其他传统的Unix文件系统:不是Windows,不是具有默认安装选项的OSX);
  2. 查找有问题的文件(git ls-files是您的朋友);
  3. 以某种方式解决问题,提交更改并推送;
  4. 利润。
  5. git可能有一些选项可以让它以更有用的方式检测出这些问题:如果是这样,我不知道它们是什么。

答案 1 :(得分:0)

我找到了answare。感谢@tfb 我只是提交git要求的新更改,在我运行测试后,一切都很好,绿色然后我推动掌握。 但我又有同样的问题,但这次我运行git stash 一次然后git pull 它取了我的新提交,现在没关系

答案 2 :(得分:0)

我最好的选择是git的一个非常常见的问题,主要出现在PC和Mac / Linux上使用相同的存储库时:

不知何故,有人可能会两次提交这些文件。因为Windows在文件系统中不区分大小写,所以文件可以以不同的大写形式多次提交。

这让Git疯狂,第一个受到影响的是Mac / Linux用户,他们会看到两个不同的大写,每次都有一个。 Git会将两个版本的文件名的更改存储在同一个空间中,但会在Mac / Linux上单独显示该文件的每个版本。

解决此问题的最佳做法是备份文件的正确版本,然后使用git rm将其删除。然后提交删除。 Git将再次显示该文件(通常以不同的大写形式),也删除第二个实例,直到文件没有变化,并且该文件在存储库中不存在。

然后重新创建文件(记住正确的大小写)并使用git add将其添加到仓库中,然后推送更改。确保所有仍有问题的用户在完成此操作后重新克隆回购。