【问题标题】:Git file locally marked as deleted after pull拉取后本地标记为已删除的 Git 文件
【发布时间】:2020-10-12 11:05:26
【问题描述】:

今天开始出现一个问题,我们的一个分支机构表现得很奇怪。 如果分支被拉出,则文件被标记为并被删除,作为非暂存更改。与分支的服务器版本相比,这个文件肯定存在。

如果我对文件执行 git checkout,当然会撤消删除操作。 如果我进一步删除此分支的本地版本并再次拉取,则不会将同一文件标记为删除。

此文件的最新更改是在三个多月前。几天前的最新提交。每晚 CI 管道运行良好。

我们正在使用 Azure DevOps 和所有包含的功能,例如使用多个代理等构建管道。

有什么线索吗?

我应该补充一下,这会导致巨大的问题,因为我们的构建从今天开始无法运行。因为构建步骤拉动分支 -> 获得相同的删除标记 -> 构建解决方案失败。

会发生以下情况,从一个完全干净的、无关的、没有任何变化的结帐中签出:

git checkout <corrupt branch>
git status

如果我们在结帐之前或之后拉动分支,我们会得到相同的结果,而损坏的分支尚未完全同步。

编辑,我们注意到:

警告:以下路径发生冲突(例如区分大小写的路径 在不区分大小写的文件系统上)并且只有一个来自相同的文件系统 碰撞组在工作树中:

没有对文件夹路径或文件进行任何更改。数百个项目使用此路径。只有其中一个人认为路径已被复制。 有什么想法吗?

【问题讨论】:

  • 您可以在您的问题中添加一些命令-/git status 输出吗?这可能会有所帮助。
  • 我想到的,发生在我身上的事情是--autostash,但我猜你已经尝试了足够的方法来排除这种情况。 --autostash 可以存储和恢复您的存储,围绕拉动(本地修改无法完成)。这包括恢复删除。并且--autostash 可以配置为始终在拉取期间发生。
  • 这个分支被拉到的每台机器上都会发生这种情况。多个工作站,更重要的是没有共享本地设置的全新虚拟机和容器。很长一段时间以来,我们都没有更改构建中的任何内容。这发生在一夜之间。
  • 根据您的错误消息,您使用的是不区分大小写的文件系统。您使用的是哪种操作系统?
  • 我们解决了。这是愚蠢的。我们正在使用窗户。问题确实是不区分大小写。最大的问题是,没有任何历史表明这条道路会不断变化。很明显,有些事情发生了变化。事实证明,我们的一位开发人员已将该文件完全移动到小写路径。在与问题出现的位置无关的分支/构建中。它显示了我们现在已经纠正的泄漏构建和脏工作区的一些问题。我们还关闭了在路径中提交更改的功能,这仅在大小写上有所不同。幸运的是,它相当孤立。

标签: git azure-devops continuous-integration


【解决方案1】:

问题确实是不区分大小写。最大的问题是,没有历史表明这条道路会不断变化。很明显,有些事情发生了变化。

事实证明,我们的一位开发人员已将该文件完全移动到小写路径。在与问题本身无关的分支/构建中。

它显示了一些问题,即在我们现在已更正的隔离代理池中存在泄漏的构建和脏工作区。我们还关闭了在路径中提交更改的功能,这仅在大小写上有所不同。幸运的是,它相当孤立。

找到解决方案后感觉很愚蠢.. 你生活,你学习。

【讨论】:

    猜你喜欢
    • 2020-05-30
    • 1970-01-01
    • 2010-09-30
    • 2012-08-11
    • 1970-01-01
    • 2012-09-08
    • 2020-07-09
    • 1970-01-01
    相关资源
    最近更新 更多