备份使用git的项目

备份使用git的项目,git,Git,在快速重新安装之前,我正在把我的东西刻录到dvd上。作为一个新用户,git从来没有这样做过。我只是想和你们核实一下。如果我理解正确,我只需要备份我的项目目录project_name(其中包含.git)以查看隐藏的文件,当我将其复制到“新”计算机上并再次安装git时,我会像什么都没发生一样继续吗?对吗?对。对 如果您只想备份项目文件(没有历史记录),可以使用(这样,我就不必“监视隐藏文件”) 该脚本将实际归档当前路径中的所有git存储库和子模块 用于创建包含其他子模块的git super项目的单个

在快速重新安装之前,我正在把我的东西刻录到dvd上。作为一个新用户,git从来没有这样做过。我只是想和你们核实一下。如果我理解正确,我只需要备份我的项目目录project_name(其中包含.git)以查看隐藏的文件,当我将其复制到“新”计算机上并再次安装git时,我会像什么都没发生一样继续吗?对吗?

对。对

如果您只想备份项目文件(没有历史记录),可以使用(这样,我就不必“监视隐藏文件”)

该脚本将实际归档当前路径中的所有git存储库和子模块

用于创建包含其他子模块的git super项目的单个文件


正如评论中正确提到的那样,更适合于保存历史。(
git bundle
是在中引入的)

git bundle
旨在允许在存储库之间没有直接连接(即离线)的情况下传输git提交,但由于提交数量众多且存在多个分支,因此不能使用修补程序。
git bundle
只是一个文件,可以很容易地创建并再次导入,因为它可以像另一个远程文件一样处理。一个简单的例子:

一个包保存在包含我的主分支和测试分支的
~/devel.bdl
下。
如果我现在在存储库B,我只使用
jojo@dualtron:~$git ls remote devel.bdl
,它显示了存储在捆绑包中的分支。
为了使用bundle,我简单地将其作为远程处理,使用git fetch(例如)


有史以来最短、最省心的答案:)我试着说“是的”,但它不允许我发布少于15个字符的答案:P git存储库只是一个文件夹(及其子文件夹),带有一个用git init初始化的.git目录。你可以将这个文件夹移动到任何地方,它将与git一起工作。我也是git的新手,因此遇到了这个问题。尽管从这里的其他答案来看,
git bundle
似乎是一个更好的选择,但如果手动备份文件,肯定只需要备份.git文件夹?任何分支的当前状态是否可以仅从该文件夹的内容正确地重建?对于备份,我认为
git bundle
git archive
更合适
git archive
只创建树的tarball(快照),但不保留提交和历史记录
git bundle
create without any dependencies可以是一个包含任意多个分支的冻干存储库。@Charles:谢谢您的评论。我已经相应地编辑了我的答案。使用“git bundle…”比只选择全部/复制/粘贴整个批次有什么优势吗?对于这种特殊情况(只是刻录到dvd或暂时放在usb上)?@ldigas理论上,您的刻录程序可能会弄乱git的文件名,除非您将repo放入存档文件中。但是,如果您仍然存档,则使用bundle可以直接用作远程(当然,如果是在CD上,则为只读)。bundle的主要优点是它能够仅绑定主repo历史的一部分,允许您进行增量保存,并在目标上增量应用它们。另外,这是一个要复制的文件。
jojo@dualtron:~/devel$ git bundle create ~/devel.bdl master test 
jojo@dualtron:~/git/repoB$ git fetch ~/devel.bdl refs/heads/\*:refs/remotes/bundle/\*