2010-09-16 90 views

回答

11

如果你这样做,而不是使用clonebundle那么您还可以给他们你的.git/hooks目录,.git/config文件和其他一些自定义的文件。这些文件不包含任何敏感数据(您会知道,因为您可能已经手动将其放入),但它们可能包含个性化设置。例如,您可能在.git/config中设置了user.nameuser.email配置设置。你可能写了一些钩子脚本(在.git/hooks/*)可能包含密码 - 但是,就像我说过的,你可能已经知道了。

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

+2

对! '.git/config'文件可能很敏感。 +1 – VonC 2010-09-17 04:08:23

4

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

请参阅Backup of github repoBackup a Local Git Repository了解更多信息。

.git(捆绑的或压缩的)将不会包含除放入其中的所有历史和文件之外的任何敏感数据。例如
请参阅git - remove file from the repository以删除敏感数据。

由于Pat Notz提到his answer,压缩的.git将包含您的.git/config
我意识到我的包含一些远程回购地址,我实际上必须把我的[email protected]他们的工作。因此,您不应该包含任何本地元数据(如.git/config),因为它们本意是......。

7

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

不能正常运:

  • HEADFETCH_HEADORIG_HEADMERGE_HEAD
  • config
  • description
  • hooks/
  • index
  • info/ - 杂
  • logs/ - reflogs

通常输送(例如通过克隆,提取,推,和束):

  • objects/
  • packed-refs
  • refs/

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

HEADs,index(不在裸仓库中)以及推荐日志(logs/)都是对象库中的附加入口点。如果你已经做了任何历史重写(例如,你最近从记录的历史记录中删除了一些敏感的配置文件),你会特别注意reflog(可能没有在大多数裸存储库上启用)和refs/original/refs部分命名空间。

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

config可能有其他敏感信息。

info/有各种各样的信息;其中一些可能是敏感的(信息/替代);有些不太可能是敏感的(假设内容本身是“干净的”-info/refs,info/packs);有些可能对储存库的操作很重要(信息/移植)。您使用的任何附加工具(钩子脚本,Web界面等)都可能在这里存储数据;其中一些可能是敏感的(访问控制列表等)。

如果在hooks/中有任何活动,您需要评估是否应该提供存储库的副本(还要检查它是否存储了存储库中任何位置的任何额外数据)。

description文件可能是无害的,但你可以检查它。


如果你只移交的内容,那么你或许应该只克隆到一个新的纯仓库或使用束(git bundleVonC describes)。

如果您负责切换内容以及用于管理它的过程,那么您将不得不单独调查存储库中的每一位。


一般(或更多​​的“偏执狂”的方式),有一个Git仓库的层次里面很多地方有人可以存储任何随机文件。如果你想确保你只提供Git需要的数据,你应该使用克隆或捆绑包。如果您需要提供一些“每个存储库”数据(例如,用于管理存储库的某个挂钩),则应克隆到新的裸存储库(使用file: URL避免复制和硬连接现有对象存储库文件)并重新安装只有履行你的义务所需的钩子/数据。

+0

不错 - 很多很好的细节。 – 2010-09-17 06:26:24

+0

像这位先生说的,很多细节。 +1 – VonC 2010-09-17 21:19:26

相关问题