随机暂存文件会自动出现在git workdir中

随机暂存文件会自动出现在git workdir中,git,Git,我使用git new workdir来分隔我的工作区域(git版本是2.1.2,git worktree不可用)。我保留了一个存储库的克隆副本(我知道workdirs通过符号链接指向它)。随着时间的推移,我从未接触过的随机文件会自动出现在克隆目录中(我不必接触该目录),有时也会出现在相关的workdirs中。许多这样的文件会出现,并且它们总是处于暂存状态(这些文件是合法的存储库对象,也就是说,它们不是完全随机的垃圾)。我一直找不到一个押韵或理由,除了我关心的工作通常不受影响;它似乎只影响我不经常

我使用
git new workdir
来分隔我的工作区域(git版本是2.1.2,
git worktree
不可用)。我保留了一个存储库的克隆副本(我知道workdirs通过符号链接指向它)。随着时间的推移,我从未接触过的随机文件会自动出现在克隆目录中(我不必接触该目录),有时也会出现在相关的workdirs中。许多这样的文件会出现,并且它们总是处于暂存状态(这些文件是合法的存储库对象,也就是说,它们不是完全随机的垃圾)。我一直找不到一个押韵或理由,除了我关心的工作通常不受影响;它似乎只影响我不经常使用的目录。这已经持续了几个月了

样本工作顺序:

  • 存储库的git克隆(做过一次)——称之为“repo”
  • 创建工作区:
    git new workdir repo TICKET
    <代码>cd票<代码>git获取<代码>git 联席分行
  • 工作票,编辑,提交,推送文件,获取,拉;我可能会也可能不会切换分支,通常不会
  • 创建另一个工作区;努力吧
  • 冲洗,重复
  • 时间流逝:来回切换,执行更多的提交、推送、获取和拉取,删除WorkDir
  • 转到“回购”,执行git状态;出现了一堆暂存文件,包括新的、修改的和删除的文件,这些文件与我在任何地方所做的任何事情都完全无关(同样,不是垃圾,但它们似乎是对合法的repo对象的实际更改,以某种方式传播到了我的workdir)。没有表示合并,尽管它看起来类似于在合并过程中所看到的。看起来我已经修改了repo文件并进行了git添加,但我没有
  • 当这种情况发生时,我有点不知所措;要么我因为担心“修复”它会破坏某些东西而不去管它,要么我删除整个目录并重新开始(如果它是workdir)

    我唯一的理论是,如果我在未经git允许的情况下删除我使用的workdir,git可能不喜欢它。但是我没有看到任何
    gitdelworkdir
    命令

    任何孤立这一点的提示或阐明情况的想法都将不胜感激;到目前为止,我还没有想出任何主意。虽然我已经使用git几年了,但我对git的了解还是相当有限的。我确实看到
    git new workdir
    已被
    git worktree
    取代;这是原因之一吗

    虽然我试图搜索SO或互联网,但很难找到有效的症状关键词。我意识到我的写作有点欠缺,但很难在小范围内复制这个问题,因为这需要创建我自己的回购协议,而我没有办法这样做(也需要投入大量可能毫无结果的时间和精力)

    环境是rhel6 AWS

    编辑:我已经确定,在受影响的目录中,差异似乎与最近签入的内容相反,大概是因为我上次拉了一下workdir。添加的文件显示为已删除,已删除的文件显示为已添加,而已修改的文件将被反转。这与某些指数变得混乱的理论是一致的

    常见问题

  • 为什么要运行Git 2.1.2版?答:因为这是我的组织提供的,而我只是一个卑微的叶子节点
  • 为什么不从源代码编译2.18.0?答:1)我不确定互操作性的含义。2) 我在虚拟机上工作,我在每天开始时(或一天几次)启动虚拟机,并在结束时终止。安装非标准软件很痛苦。如果我能制作一个RPM来安装,那会有所帮助。我并不是真的热衷于每天早上做一个“makeinstall”

  • 你能补充一些细节吗,“出现了一堆暂存文件,包括新的、修改的和删除的文件,与我在任何地方做过的任何事情都完全无关”?我猜这些不是随机文件中的随机数据。顺便说一句,我今天肯定会用
    git worktree
    来做这类事情。我们可以假设你没有使用子模块,也没有使用任何挂钩吗?谢谢,@Chris,我添加了一些额外的澄清细节。这些文件是合法的repo对象,而不是垃圾。它看起来类似于如果我在主线更改到我的工作DIDER的中间,可能会发生什么,除非没有合并指示,并且我没有合并。尝试将显示的更改与特定提交联系起来会很有趣。嗯,@K.A.Buhr,我不知道子模块是什么,但我使用的是我的组织提供的挂钩。我查看了这些脚本是否有任何可疑之处,但大多数情况下,它们会检查代码中的调试指示器,强制执行票证编号规范,更新cscope,诸如此类的良性内容。我没有使用旧的
    git new workdir
    脚本,但它们会使用git使用的链接和(单数)索引文件来玩把戏。如果技巧出了问题,您将有不同的工作树相互碰撞对方的索引文件,这将导致您看到的症状。最好使用单独的克隆,这样可以避免这个问题,但显然会占用更多的空间。