【问题标题】:How to switch branch when filename case changes?文件名大小写更改时如何切换分支?
【发布时间】:2018-04-30 07:45:05
【问题描述】:
  1. 我有一个分支development 和一个文件Config.json
  2. 我正在创建一个新分支 new_development,我将在其中将 Config.json 重命名为 config.json 并提交。
  3. 我切换回development 以查看该分支中的某些内容是如何制作的。没有错误。
  4. 我切换到new_development 继续研究新的东西。它显示一个错误:

错误:以下未跟踪的工作树文件将被结帐覆盖:

   Config.json

请在切换分支之前移动或移除它们。

中止

文件实际上在 git 中。

我有这个 git 配置:

[core]
    ignorecase = false

当相同的文件有不同的大小写时,如何使分支切换工作?

【问题讨论】:

  • 通过 -am 选项提交,git commit -am "config file name changed"
  • 错误消息似乎表明它不受版本控制“错误:以下未跟踪的工作树文件将被结帐覆盖”。我不太确定你是如何以这种方式结束的。 git ls-tree HEAD .Config.json 所在的分支和目录上显示什么?您在列表中看到Config.json 吗?如果不是,那么它不在版本控制之下(不仅仅是一个案例问题)。
  • 你为什么有ignoreCase = false?看起来您使用的是区分大小写的文件系统。
  • 如果我不得不猜测,我会说Config.json 没有致力于您的开发分支。这里还没有足够的信息。你能在你的两个分支上打印出git ls-files(列出你的仓库中的所有文件)和git status吗?要切换到您的新分支,您可能需要删除 Config.Json(所以现在只需将其删除/复制到其他地方),那么您至少应该能够交换分支。

标签: git


【解决方案1】:

当相同的文件有不同的大小写时,如何使分支切换工作?

core.ignoreCase 改回true

你在一个大小写不敏感文件系统上; git 使用 core.ignoreCase 设置来表明这一点。它在您创建存储库时进行配置(通过git initgit clone):git 查看您的文件系统以确定它是否区分大小写,并缓存该信息(在core.ignoreCase 设置中)以便它不必对每个操作都进行此查找。

这不是您可以更改的设置。

使用core.ignoreCase = false,在不区分大小写文件系统上:

% git ls-tree HEAD
100644 blob 257cc5642cb1a054f08cc83f2d943e56fd3ebe99    foo
% git ls-tree branch
100644 blob bcc9cdfd113753edf279e92afd622b0f3bb05fbc    FOO
% git checkout branch
error: The following untracked working tree files would be overwritten by checkout:
    FOO
Please move or remove them before you switch branches.
Aborting

这是因为我告诉 git 我的文件系统 区分大小写。它查看我要检查的树,发现在我当前的HEAD 树中有一个名为FOO 的文件not,然后在磁盘上查看是否有一个未跟踪的同名工作文件。它stats 文件FOO(实际上是文件foo,因为我们在一个不区分大小写的文件系统上)并意识到您在工作目录中有一个未跟踪的文件。

当然,你不知道。你有文件foo

如果我纠正这个问题,设置core.ignoreCase 以反映我的文件系统的实际情况,那么我可以正确切换分支:

% git config core.ignoreCase true
% git checkout branch
Switched to branch 'branch'
% git ls-tree HEAD
100644 blob bcc9cdfd113753edf279e92afd622b0f3bb05fbc    FOO

【讨论】:

  • 实际上我手动将其设置为 false。我在 MacOS 上。我会把它转回来。
  • 我将core.ignoreCase 设置为true,但我仍然无法切换到另一个分支(win10)
猜你喜欢
  • 2021-04-23
  • 2013-03-07
  • 2011-12-02
  • 2016-12-18
  • 1970-01-01
  • 2021-10-25
  • 2016-06-08
相关资源
最近更新 更多