不得不将代码(整个项目历史)转移到今天的另一个开发商店,并想知道拉链我们团队用于协作的裸git存储库是一个好主意,并且只是逐字发送它?
这样做是否安全?
是否有任何敏感数据存储在.git文件夹中?
Pat*_*otz 11
如果你这样做而不是使用clone,bundle那么你也会给他们你的.git/hooks目录,.git/config文件和一些其他可自定义的文件.这些文件包含任何敏感数据并不常见(您知道因为手动将它放在那里),但它们可能包含个性化设置.例如,您可能已设置user.name和user.email配置设置.git/config.您可能已经编写了一些.git/hooks/*可能包含密码的钩子脚本(in ),但就像我说的那样,您可能已经知道了.
但是,git不会存储您的任何密码或任何其他秘密/敏感数据.
看看你的.git目录.可能有很多文件,但它们属于相当少量的常规组(对象存储数据,引用,reflog等).您可以将内容分为两大类:Git通常可以传输到其他存储库的数据和Git通常不会传输到其他存储库的数据.
通常不运输:
HEAD,FETCH_HEAD,ORIG_HEAD,MERGE_HEADconfigdescriptionhooks/indexinfo/ - 杂项 logs/ - reflogs通常运输(例如通过克隆,提取,推送和捆绑):
objects/packed-refsrefs/最后一组构成了对象存储及其已发布的入口点.您显然必须查看版本化内容本身以确定其中是否存在任何敏感内容.
HEAD,index(不存在于裸存储库中)和reflogs(logs/)都是对象存储中的附加入口点.如果您已完成任何历史记录重写(例如,您最近从记录的历史记录中删除了一些敏感配置文件),您将需要特别注意reflog(可能未在大多数裸存储库上启用)和refs/original/part of refs命名空间.
FETCH_HEAD并且config可能具有相关Git存储库的地址.
config 可能还有其他敏感信息.
info/有各种各样的信息; 其中一些可能是敏感的(信息/替代); 有些人不太敏感(假设内容本身是"干净的"-info/refs,info/packs); 一些可能对存储库(信息/移植)的操作很重要.您正在使用的任何附加工具(钩子脚本,Web界面等)可能在此处存储数据; 其中一些可能是敏感的(访问控制列表等).
如果有任何活动hooks/,您将需要评估是否应该提供存储库的副本(还要检查它是否在存储库中的任何位置存储任何额外数据).
该description文件可能是无害的,但您也可以检查它.
如果你只是传递内容,那么你应该只是克隆到一个新的裸存储库或使用一个包(git包作为VonC描述).
如果您负责处理内容以及用于管理内容的过程,那么您将需要单独调查存储库的每个位.
一般而言(或者以更"偏执"的方式),Git存储库的层次结构中有许多地方,有人可以存储任何随机文件.如果你想确定你只是赠送Git需要的数据,你应该使用克隆或包.如果您需要提供一些"每个存储库"数据(例如,用于管理存储库的一些钩子),那么您应该克隆到一个新的裸存储库(使用file:URL来避免复制和硬链接现有的对象存储文件)并仅重新安装履行义务所需的钩子/数据.