代码之家  ›  专栏  ›  技术社区  ›  chakrit Dutchie432

把“git”存储库打包并交给其他人安全吗?

git
  •  8
  • chakrit Dutchie432  · 技术社区  · 15 年前

    今天不得不将代码(整个项目历史)转移到另一个开发车间,并想知道是否将我们团队用于协作的裸git存储库zipup并逐字发送是一个好主意?

    这样做安全吗?
    是否有任何敏感数据存储在.git文件夹中?

    3 回复  |  直到 15 年前
        1
  •  11
  •   Pat Notz    15 年前

    如果你这样做而不是使用 clone bundle 然后你也会给他们你的 .git/hooks 目录, .git/config 文件和其他一些可自定义的文件。这些文件包含任何敏感数据并不常见(您应该知道,因为您会手动将其放在那里),但它们可能包含个性化设置。例如,您可能已设置 user.name user.email 中的配置设置 .git/配置 . 您可能已经编写了一些钩子脚本(在 .git/hooks/* )它可能包含密码——但是,就像我说的,你可能已经知道了。

    但是,git不存储您的任何密码或任何其他机密/敏感数据。

        2
  •  7
  •   Community CDub    8 年前

    看看你的眼睛 .git 目录。可能有很多文件,但它们属于相当少的常规组(对象存储数据、refs、reflogs等)。您可以将内容分为两大类:Git通常可能传输到其他存储库的数据和Git通常不会传输到其他存储库的数据。

    不正常运输:

    • HEAD , FETCH_HEAD ORIG_HEAD , MERGE_HEAD
    • config
    • description
    • hooks/
    • index
    • info/ 其他
    • logs/

    正常传输(例如,通过克隆、获取、推送和捆绑):

    • objects/
    • packed-refs
    • refs/

    最后一个组构成对象存储及其发布的入口点。显然,您必须检查版本内容本身,以确定其中是否有任何敏感内容。

    头部,头部 指数 日志/ )是对象存储的所有附加入口点。如果您已经进行了任何历史重写(例如,您最近从记录的历史中删除了一些敏感的配置文件),那么您将需要特别注意reflogs(可能在大多数裸存储库中没有启用)和refs命名空间的refs/original/部分。

    可能有相关Git存储库的地址。

    配置 可能有其他敏感信息。

    有各种各样的信息;有些可能是敏感的(info/alternates);有些不太可能是敏感的(假设内容本身是cleaninfo/refs、info/packs);有些可能对存储库的操作很重要(info/grafts)。您使用的任何附加工具(hook脚本、web接口等)都可能将数据存储在这里;其中一些可能是敏感的(访问控制列表等)。

    如果有什么东西在里面

    这个 描述


    如果您只是传递内容,那么您可能只需要克隆到一个新的裸存储库或使用一个包( git bundle 作为 VonC describes ).

    如果您负责传递内容以及用于管理内容的过程,那么您将必须逐个调查存储库的每一部分。


    file: URL以避免复制和硬链接现有对象存储文件),并仅重新安装履行义务所需的挂钩/数据。

        3
  •  4
  •   Community CDub    8 年前

    一个类似的解决方案是 git bundle .

    Backup of github repo Backup a Local Git Repository 更多。

    这个 .git (捆绑的 )将不包含任何敏感数据,除了所有的历史和文件,你放在它。
    看到了吗 git - remove file from the repository

    作为 Pat Notz 提到 his answer ,压缩的 .git/config .
    login@password 让他们工作。所以不应该包含任何本地元数据(比如 )因为他们注定。。。本地的。