[英]git - commited and merged changes show up as unstaged in local branch
我的一位同事添加了一个新的 SQL 表供我们使用,它已被提交并合并到我们数据库存储库的master
中。 我的本地版本是最新的,但由于某种原因, git
将其保留为非分阶段更改。 即使我 go 将其隐藏(并稍后覆盖它),或者当我强制结帐到另一个分支以便我可以工作时丢失它,它仍然会不断回来。
这不完全是个问题,因为我在提交提交时没有包含它,但我不想为此一直保持适应。 我的同事都不知道如何解决这个问题,我认为有人尝试删除他的本地存储库并再次克隆它,但它仍然没有用。 有谁知道原因以及如何解决这个问题?
我试过git stash
, git checkout --.
(删除它), git checkout -f <branch>
,但这些都不起作用,文件总是回来。
我们都在 Windows 10 上。
我刚刚检查了我们的存储库,我们有 2 个名称非常相似的文件,但是一个没有全部大写。 也许 git 与哪个是哪个混淆了?
与其说Git感到困惑,不如说在您的操作系统/文件系统组合上,您实际上无法存储这两个文件。
如果您创建一个名为ReadMe.txt
的文件,然后要求您的操作系统创建另一个名为README.TXT
的不同文件,您的操作系统会拒绝这样做。 相反,它只是用新内容覆盖ReadMe.txt
。
Git中的提交不是文件。 虽然它们确实包含文件,但它们以一种特殊的、只读的、仅限 Git 的冻结格式存储它们,您的操作系统不会使用或理解这种格式。 这种格式可以保存两种文件——一个以全大写结尾的文件和一个以混合大小写结尾的文件。
Git 正在提取这两个文件,而您的操作系统只保留其中一个。 Git 意识到您的操作系统不能同时阻止两者,但 Git 对此无能为力。 (它至少可以警告你,而且最近,Git 已经学会了这样做。)
解决此问题的方法是进行新的提交,其中文件具有明显不同的名称(或者其中只有一个文件具有您的操作系统认为是一个名称的两个名称)。 最简单的方法是在可以存储两个名称的计算机或文件系统上进行。 例如,如果您手边有一台 Linux 机器,请在此处克隆存储库,将文件打乱,提交和推送。 新提交将文件存储在新改进的名称下。 小心不要检查在 Windows 上具有重叠名称的两个文件的旧提交。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.