Dav*_*vid 1 git team-foundation-server path
我们一直在使用内部部署的 Team Foundation Server v. 15.117.27414.0
.
一切正常,除了在项目的门户网站上,在代码页(代码浏览器)上,git 存储库中的所有文件都没有出现。例如,我们有一个 MVC 项目,里面有一个 Models 文件夹,有 11 个类,但是只有 7 个出现在网页中。项目的显示方式还有其他问题。例如,有两个同名的项目文件夹(一个字符大小写不匹配),内容相似,实际上应该有一个。
所有这些都令人困惑。否则,一切正常。我们可以克隆项目或将其下载为 zip 文件,所有文件都在那里。它只是混淆了它在 TFS 门户中的“代码”选项卡下的显示方式。
Git 是一个区分大小写的版本控制系统。因此,它允许您提交仅在大小写不同的文件和文件夹。这是完全合法的,也是 Azure DevOps 和 Team Foundation Server(实际上,每个 Git 托管提供商)必须允许和支持的。
您可以通过git ls-tree HEAD
在您的存储库中运行来查看这一点。它将显示两种情况下的文件。
发生了两件事之一:
core.ignorecase
。 core.ignorecase
指示 Git 你在一个不区分大小写的文件系统上,如果你在存储库中已经git add FOO/file.txt
有一个命名的目录时运行foo
,你实际上想要使用现有目录。core.ignorecase
不是应该更改的设置。这不是一个选择。它是一个缓存值。Git 会在创建存储库时发现您的文件系统功能(区分大小写、Unicode 功能)并缓存它们,这样它就不必在每个命令上重新发现此信息。
不应更改此值,否则您可能会遇到此类问题。
要解决此问题,您可以将一个案例重命名为另一个案例。例如,如果您有一个存储库,其中包含一个名为 的文件夹foo
和另一个名为FOO
. 假设您有两个文件,foo/bar
并且FOO/baz
:
% git ls-files --stage
100644 e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 0 FOO/baz
100644 e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 0 foo/bar
Run Code Online (Sandbox Code Playgroud)
要解决此问题,请决定要保留哪个名称(foo
或FOO
)并重命名另一个。您需要git mv
与-f
标志一起使用:
% git mv -f FOO/baz foo/baz
% git status
On branch master
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
renamed: FOO/baz -> foo/baz
Run Code Online (Sandbox Code Playgroud)
您可以检查它以解决问题。
如果您有两个名称相同但大小写不同的文件,则需要决定保留哪个名称。
% git ls-files --stage
100644 ba578e48b183662ddf9b38682cc52fb80066ce6d 0 FOO/bar
100644 5716ca5987cbf97d6bb54920bea6adde242d87e6 0 foo/bar
Run Code Online (Sandbox Code Playgroud)
要删除其他文件,请使用--cached
标志git rm
来防止将其从磁盘中删除。
% git rm --cached FOO/bar
% git status
On branch master
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
deleted: FOO/bar
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
134 次 |
最近记录: |