签出分支(主)和git pull
后,我有两个文件显示为已修改,我无法摆脱。
我已尝试过所有内容(git stash
,git checkout .
,git reset
,git reset --hard
,git 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
答案 0 :(得分:1)
我认为这里的问题是你在Mac上使用不区分大小写(但保留大小写)的文件系统,而git是区分大小写的。
这意味着在git repo中,有可能只有大小写(路径)名称不同的文件,但在文件系统中不可能有这些名称。结果是当你签出提交时,其中一个文件不可避免地会覆盖另一个,除非文件相同,否则git将总是在结帐时看到修改后的文件。
解决方案不是这样做:如果您可能不得不使用不区分大小写的文件系统,则永远不要使用名称不同的文件。
解决问题:
git ls-files
是您的朋友); 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
将其添加到仓库中,然后推送更改。确保所有仍有问题的用户在完成此操作后重新克隆回购。