我正在将我的文件刻录在DVD上,做一个快速重装之前。作为最近开始使用git的用户,我从未尝试过这样做。所以我想和你们确认一下。如果我理解正确的话,我只需要备份包含.git文件夹的项目目录project_name,并注意备份其中的隐藏文件。当我将其复制到“新”机器上并重新安装git后,我可以像什么都没有发生一样继续工作?是这样吗?
我正在将我的文件刻录在DVD上,做一个快速重装之前。作为最近开始使用git的用户,我从未尝试过这样做。所以我想和你们确认一下。如果我理解正确的话,我只需要备份包含.git文件夹的项目目录project_name,并注意备份其中的隐藏文件。当我将其复制到“新”机器上并重新安装git后,我可以像什么都没有发生一样继续工作?是这样吗?
git archive
(这样,我就不必“观察隐藏文件”)。git-archive-all.sh
实际上会归档当前路径中的所有 git 存储库和子模块。
有助于创建一个包含其他子模块的 git 超级项目的单个 tar 文件。
正如查尔斯·贝利在评论中所提到的,git bundle
更为适合以保留历史记录(git bundle
于2007年2月推出)。
git bundle
旨在允许在存储库之间没有直接连接(即离线)时传输git提交,但由于提交数量众多和多个分支,使用补丁不是一个选项。
git bundle
只是一个文件,可以非常轻松地创建并导入,因为它可以像另一个远程仓库一样处理。以下是一个快速示例:
jojo@dualtron:~/devel$ git bundle create ~/devel.bdl master test
一个捆绑包保存在
~/devel.bdl
下,其中包含我的主分支和测试分支。
如果我现在在 B 仓库,只需使用jojo@dualtron:~$ git ls-remote devel.bdl
,它会显示存储在捆绑包中的分支。
要使用捆绑包,只需像使用远程仓库一样,使用 git fetch(例如)。
jojo@dualtron:~/git/repoB$ git fetch ~/devel.bdl refs/heads/\*:refs/remotes/bundle/\*
git bundle
比git archive
更合适。git archive
只创建树(快照)的tarballs,但不保留提交和历史记录。git bundle
可以创建一个冻干的存储库,没有任何依赖关系,可以是您喜欢的任意分支。 - CB Baileygit bundle
似乎是更好的选择,但如果手动备份文件,那么只需要备份.git
文件夹即可,对吗?仅凭该文件夹的内容,可以正确地重建任何分支的当前状态吗? - Drew Noakes