将`git`存储库压缩并将其交给其他人是否安全?
不得不将代码(整个项目历史)转移到另一个开发商店,并且想知道是否将我们的团队用于协作的裸露git存储库进行压缩并将其逐字逐句发送是一个好主意?将`git`存储库压缩并将其交给其他人是否安全?
这样做是否安全?
在.git文件夹中是否存储有敏感数据?
如果你这样做,而不是使用clone
或bundle
那么您还可以给他们你的.git/hooks
目录,.git/config
文件和其他一些自定义的文件。这些文件不包含任何敏感数据(您会知道,因为您可能已经手动将其放入),但它们可能包含个性化设置。例如,您可能在.git/config
中设置了user.name
和user.email
配置设置。你可能写了一些钩子脚本(在.git/hooks/*
)可能包含密码 - 但是,就像我说过的,你可能已经知道了。
但是,git不会存储您的任何密码或任何其他秘密/敏感数据。
一个类似的解决方案是git bundle
。
请参阅Backup of github repo或Backup a Local Git Repository了解更多信息。
.git
(捆绑的或压缩的)将不会包含除放入其中的所有历史和文件之外的任何敏感数据。例如
请参阅git - remove file from the repository以删除敏感数据。
由于Pat Notz提到his answer,压缩的.git
将包含您的.git/config
。
我意识到我的包含一些远程回购地址,我实际上必须把我的[email protected]
他们的工作。因此,您不应该包含任何本地元数据(如.git/config
),因为它们本意是......。
看一下你的.git
目录。可能有很多文件,但它们属于相当少量的常规组(对象存储数据,refs,reflog等)。您可以将内容分为两大类:Git可能通常传输到其他存储库的数据以及Git通常不会传输到其他存储库的数据。
不能正常运:
-
HEAD
,FETCH_HEAD
,ORIG_HEAD
,MERGE_HEAD
config
description
hooks/
index
-
info/
- 杂 -
logs/
- reflogs
通常输送(例如通过克隆,提取,推,和束):
objects/
packed-refs
refs/
这最后一组构成了对象存储和其公布的入口点。您显然必须检查版本化内容本身,以确定是否有任何敏感内容。
HEADs,index
(不在裸仓库中)以及推荐日志(logs/
)都是对象库中的附加入口点。如果你已经做了任何历史重写(例如,你最近从记录的历史记录中删除了一些敏感的配置文件),你会特别注意reflog(可能没有在大多数裸存储库上启用)和refs/original/refs部分命名空间。
FETCH_HEAD
和config
可能具有相关Git存储库的地址。
config
可能有其他敏感信息。
info/
有各种各样的信息;其中一些可能是敏感的(信息/替代);有些不太可能是敏感的(假设内容本身是“干净的”-info/refs,info/packs);有些可能对储存库的操作很重要(信息/移植)。您使用的任何附加工具(钩子脚本,Web界面等)都可能在这里存储数据;其中一些可能是敏感的(访问控制列表等)。
如果在hooks/
中有任何活动,您需要评估是否应该提供存储库的副本(还要检查它是否存储了存储库中任何位置的任何额外数据)。
description
文件可能是无害的,但你可以检查它。
如果你只移交的内容,那么你或许应该只克隆到一个新的纯仓库或使用束(git bundle为VonC describes)。
如果您负责切换内容以及用于管理它的过程,那么您将不得不单独调查存储库中的每一位。
一般(或更多的“偏执狂”的方式),有一个Git仓库的层次里面很多地方有人可以存储任何随机文件。如果你想确保你只提供Git需要的数据,你应该使用克隆或捆绑包。如果您需要提供一些“每个存储库”数据(例如,用于管理存储库的某个挂钩),则应克隆到新的裸存储库(使用file:
URL避免复制和硬连接现有对象存储库文件)并重新安装只有履行你的义务所需的钩子/数据。
不错 - 很多很好的细节。 – 2010-09-17 06:26:24
像这位先生说的,很多细节。 +1 – VonC 2010-09-17 21:19:26
对! '.git/config'文件可能很敏感。 +1 – VonC 2010-09-17 04:08:23