Git 切换分支时删除文件
Git removes file when switching branches
如果我检出 git 分支,有时文件 path/to/File
会被删除。我可以将其视为手术后未分阶段的更改。始终是同一个文本文件,很久没有编辑过。所以它应该是每个分支的相同文件。 (但一个分支称它为 path/to/file
。)
通常我使用Atlassian Sourcetree来切换分支,但问题也出现在我们的gitlab ci/cd runner上,可能使用简单的git命令行命令。
问题出现在存储库的各个克隆和各个分支中。
存储库是否已损坏?知道如何解决这个问题吗?
这是一个区分大小写的问题:git
需要一个具有特定字母大小写的文件,但您的系统可以使用不同的字母大小写。
可能有两种与此相关的错误:
git
的存储中可能只有 filename
的一个“版本”,
git
的存储中可能有 filename
和 FileName
版本。
检查 git 的提交 (git ls-tree HEAD:path/to/directory
) 的内容以查看您有什么变体。
如果是第一个:“修复”它只需要在 git 的存储中选择正确的名称,并确保磁盘上的名称相同,
如果是第二个:你还需要比较两个版本的内容(一种方式是git diff HEAD:path/to/filename HEAD:path/to/FileName
),并检查应该保留哪个版本。
注意事项:Windows 将 mv filename FileName
视为 noop,更改磁盘上名称大小写的最简单方法是通过临时名称 mv filename tempfile && mv tempfile FileName
如果我检出 git 分支,有时文件 path/to/File
会被删除。我可以将其视为手术后未分阶段的更改。始终是同一个文本文件,很久没有编辑过。所以它应该是每个分支的相同文件。 (但一个分支称它为 path/to/file
。)
通常我使用Atlassian Sourcetree来切换分支,但问题也出现在我们的gitlab ci/cd runner上,可能使用简单的git命令行命令。
问题出现在存储库的各个克隆和各个分支中。
存储库是否已损坏?知道如何解决这个问题吗?
这是一个区分大小写的问题:git
需要一个具有特定字母大小写的文件,但您的系统可以使用不同的字母大小写。
可能有两种与此相关的错误:
git
的存储中可能只有filename
的一个“版本”,git
的存储中可能有filename
和FileName
版本。
检查 git 的提交 (git ls-tree HEAD:path/to/directory
) 的内容以查看您有什么变体。
如果是第一个:“修复”它只需要在 git 的存储中选择正确的名称,并确保磁盘上的名称相同,
如果是第二个:你还需要比较两个版本的内容(一种方式是
git diff HEAD:path/to/filename HEAD:path/to/FileName
),并检查应该保留哪个版本。
注意事项:Windows 将 mv filename FileName
视为 noop,更改磁盘上名称大小写的最简单方法是通过临时名称 mv filename tempfile && mv tempfile FileName