【发布时间】:2011-07-24 07:44:51
【问题描述】:
这是一个巨大的痛苦。我以前遇到过几次,我不明白为什么。 5 分钟前,repo 很好并且可以正常工作,我移动了一些文件(这很酷)并且 git 大便它的裤子。知道为什么会这样吗?除了克隆 repo、移动文件等之外,我该如何修复它...
【问题讨论】:
标签: git versioning
这是一个巨大的痛苦。我以前遇到过几次,我不明白为什么。 5 分钟前,repo 很好并且可以正常工作,我移动了一些文件(这很酷)并且 git 大便它的裤子。知道为什么会这样吗?除了克隆 repo、移动文件等之外,我该如何修复它...
【问题讨论】:
标签: git versioning
天哪,我太失败了。看起来问题源于 Flash Builder 将其他 .git 存储库复制到子文件夹中。答案是删除所有不属于 repo 的 .git 文件夹。
【讨论】:
vendor 文件夹中删除 .git 文件夹,该文件夹仅包含有问题的依赖项。在目标回购通过一些变基之后,@dev 依赖关系发生在我身上。
git pull 可能会发生这种情况。
由于损坏/未正确初始化的子模块(带有自己的 .git 子文件夹),我遇到了这个错误。我暂时删除了子模块文件夹并在主项目的根目录中使用了git init。为我解决了这个问题。
【讨论】:
git submodule init && git submodule update。
我知道这是一个旧线程,但我只是遇到了同样的问题并最终以不同的方式解决。 git init 对我不起作用。
在这里发帖,以防对其他人有用。
我的存储库有两个子模块。 变基后,我开始收到错误 fatal: git status --porcelain failed。
解决方案是验证每个子模块 config 文件中的属性 worktree - 例如<repository-checkout>/.git/modules/<submodule-name>/config.
worktree 属性的路径无效。它链接到一个不存在的文件夹,该文件夹已更改并合并到 master - 可能是由于解决冲突的错误。
【讨论】:
如果它对其他人有帮助,我刚刚遇到了同样的问题,发现在项目根目录中运行 git init 可以解决它。
【讨论】:
git init,问题确实消失了。谢谢!
我遇到了同样的问题。在我的根项目目录中运行 git status 会产生以下错误:
fatal: This operation must be run in a work tree
fatal: 'git status --porcelain' failed in submodule js/object-subscribe
在受影响的子模块 (js/object-subscribe) 中运行 git status 会产生此错误:
fatal: This operation must be run in a work tree
在该子模块的文件夹中运行 git init 为我做了。
【讨论】:
在我的情况下,使用带有 git 2.12.2 的 git mv moduleA moduleB 将 moduleA/mySubmodule 移动到 moduleB/mySubmodule 后,我遇到了以下错误:
$ git status
fatal: Could not chdir to '[../]moduleA/mySubmodule': No such file or directory
fatal: 'git status --porcelain' failed in submodule mySubmodule
fatal: 'git status --porcelain' failed in submodule moduleB
然后我做了以下(可能不是这个顺序)
.gitmodules 条目更新为moduleB
.git/modules并重命名旧模块文件夹moduleB并删除子模块文件夹git submodule sync 和git submodule update
之后,我可以毫无问题地再次运行git status。
【讨论】:
通常,git会在项目的根目录(.git/)中创建一个隐藏目录
当您在 CMS 上工作时,您可以安装带有 .git/ 目录的模块/插件,其中包含特定模块/插件的 git 元数据
如果您不想使用 git 的子模块功能,最快的解决方案是删除除根 git 元数据目录之外的所有 .git 目录。 如果这样做,git 不会将这些模块视为项目子模块。
cd /path/to/your/project/code
find ./ | grep ".git/index"
一旦找到删除“.git”除根目录之外的所有目录,但如果您删除它,则再次初始化您的回购
【讨论】:
.git 是子模块中的一个文件,指向位于您的根目录.git 中的一个目录。
就我而言,我在 docker 中安装了一个 git 目录并在那里检查状态。此子模块的 .git 文件包含在 docker 中无效的绝对路径。我编辑了这个.git 文件以将 gitdir 路径更改为相对路径。
Git 版本:2.7.4
【讨论】:
我设法解决了以下问题:
假设子文件夹是我遇到问题的子模块,我移动/删除了文件夹然后同步然后更新...
mv AD_Soft/子文件夹 AD_Soft/subfolder2 git submodule sync --recursive AD_Soft/subfolder/ git submodule update --recursive AD_Soft/子文件夹
这解决了我的问题..
【讨论】:
我的仓库中没有任何 .git 文件夹,但每当我将新文件复制到文件夹中以更新我的应用程序时,我仍然会收到索引损坏瓷器失败错误。我不明白更新文件会如何破坏它或如何修复它。有人对此有进一步的了解吗?
【讨论】:
cake 插件,全新安装npm 的任何CoffeeScript 模块,特别是grunt 模块,是否可能会发生这种情况?
对我来说这是不同的,git init 也没有解决问题,worktree 也没有错。
我遇到的错误是
fatal: unable to create threaded lstat
fatal: 'git status --porcelain=2' failed in submodule ext/hdf5
我的解决方案是git gc。
【讨论】:
git remote -v
#now run the same commands
git remote add origin remote-repository-url.git
git push origin master
// 效果很好
【讨论】:
从模块中删除 .git 文件夹。如果您想将来使用它,请保留该文件夹的备份。
【讨论】:
.git 是通过在子模块中意外运行 git pull 而创建的。)