gpt4 book ai didi

git - 该树包含一个具有无效路径 '.git' 的条目

转载 作者:行者123 更新时间:2023-12-02 20:58:23 24 4
gpt4 key购买 nike

我目前正在将项目从 Team Foundation 版本控制转移到 Git。我已经使用 git-tf 成功完成了两次将代码下载到本地 git 存储库,然后将该存储库推送到新的远程存储库。

在我的第三个项目中,当我尝试推送时出现以下错误:

error: unpack failed: error The tree object e934502276892b903347a524cb066a14a19d8ac0 was rejected: The tree contains an entry with an invalid relative path of '.git'.

我无法弄清楚这可能是什么,因为当我推送到 TFSGitHub 时它失败了。如果有人知道如何补救,我将不胜感激。

谢谢!

最佳答案

出于某些良好的安全原因,Git 拒绝在任何名为 .git 的目录中存储任何文件。 (如果 Git 确实 允许 .git 文件,则 Git 存储库中名为 .git/hooks/commit 的文件将成为您的提交 Hook ,并且您运行的下一次提交将运行攻击者放入该文件的任意命令。有一个检查可以避免这种情况,但结果发现它有点损坏。)出于特定于实现的原因,这个特定的安全问题显示为一个坏的“树”通过hasDotGit配置的“包含‘.git’的对象”。1

但是,并不是每个版本的 Git 都有所有测试,随着多年来发现的新问题,新版本的 Git 已经获得了针对这些旧问题的新保护措施。如果有旧版本的 Git,您的 Git 可能允许存储不安全和/或不正确的项目——例如这个坏的 tree 对象。升级到较新版本的 Git,或在某些服务器上访问较新版本的 Git,有时会诊断,甚至开始拒绝使用错误的存储库。

As of Git version 2.6, you can configure Git to accept certain bad repository items ,即使您通常已打开检查。 (在 2.6 之前,您必须完全关闭检查。)您可以选择忽略某些问题,将某些问题降级为警告级别,将警告升级为错误,和/或通过哈希 ID 忽略某些特定对象。此配置必须 服务器上完成;是否以及如何在您使用的服务器上完成,我不知道。另见 this GitLab forum posting ,这表明某物或某人一直在关闭和打开它。

作为引用,Git 版本 2.2.1、2.1.4、2.0.5、1.9.5 和 1.8.5 是 Git 开始检查以 NTFS 和MacOS (HFS) 特定方式和不区分大小写(在此之前,.Git.gIt.GIT 都被接受OK——它们通常在 Linux/Unix 系统上)。这些检查位于 fsck.c 中,并可选择在所有包上传、下载和索引操作中调用。请参阅 git config 文档,搜索 fsck 的每个实例,因为有许多配置旋钮可以完全启用或禁用检查,或更改问题的严重性。

要将 hasDotGit 的严重性降低到 warning,您可以:

$ git config fsck.hasDotGit warning

在该特定存储库中。

除了重新配置服务器之外,您还可以选择重写错误存储库的历史记录(使用 git filter-branch),使其成为良好的存储库。但是,如果您这样做,您实际上将迫使所有用户重新克隆。


1短信的确切格式进行了国际化,但默认为contains '.git',配置字符串为hasDotGit .

配置字符串不明显,似乎没有正确记录。它们是通过取 enumerated names in the fsck.c source 形成的并删除所有下划线并转换为小写字母,然后在您喜欢制作驼峰命名的任何地方重新大写。 (git config 字符串比较不区分大小写,因此您可以根据需要实际配置 fsck.hasdotgitfsck.HASDOTGIT。 camelCase 只是一种约定。)

关于git - 该树包含一个具有无效路径 '.git' 的条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39486989/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com