Git+中文教程(17)
时间:2026-01-20
时间:2026-01-20
Git+中文教程
Git 中文教程
Note你将会看到两个文件,pack-*.pack and pack-*.idx 在 .git/objects/pack 目录。他们的关系是很
密切的,如果你手动将他们拷贝到别的版本库中的话,你要决定将他们一起拷贝。前者是
保存着所有被打包的数据的文件,后者是随机访问的索引。
如果你是个偏执狂,就运行一下 git-verity-pack 命令来检查一下有缺陷的包吧,不过,其实你无须太多担心,我们的程序非常出色 ;-).
一旦你已经对那些对象打包了,那么那些已经被打过包的原始的对象,就没有必要保留了。
$ git prune-packed
会帮你清楚他们。
如果你好奇的话,你可以在执行 git-prune-repacked 命令之前和之后,都运行一下 find .git/objects -type f,这样你就能看到有多少没有打包的对象,以及节省了多少磁盘空间。
Notegit pull git-pull 对于 HTTP 传输来说,一个打包过的版本库会将一定数量的相关联的对象放
进一个有关联性的打包中。如果你设想多次从 HTTP 公共版本库中导入数据,你也许要频
繁地 reapck & prune,要么就干脆从不这样做。
如果你此时再次运行 git-repack,它就会说 "Nothing to pack"。要是你继续开发,并且积累了一定数量的变迁,再运行 git-repack 将会创建一个新的包,它会包含你自上次对库打包以来创建的对象。我们建议你尽快在初始化提交之后打包一下你的版本库(除非你现在的项目是个涂鸦式的草稿项目),并且在项目经历过一段很活跃的时期时,再运行 git-repack 一下。
当一个版本库通过 git-push 和 git-pull 命令来同步源版本库中打包过的对像的时候,通常保存到目标版本库中的是解包了的对象,除非你使用的是 rsync(远程同步协议)协议的传输方式。正是这种容许你在两头的版本库中有不同的打包策略的方式,他意味着你也许在过一段时间之后,需要在两头的版本库中都重新打包一下。
发布你的工作
我们可以通过一个远程的版本库来利用他人的工作,但是,你如何准备一个自己的版本库来供其他人下载呢?你在自己的工作目录下进行工作,这样你的版本库就被作为.git的一个子目录放在你的工作树下。你可以让其他人来远程的访问你的版本库,但是实际上这不是通常的做法。推荐的做法是创建一个公共的版本库,让它可供其他人访问,并且,当你在你的工作目录下做了很好的改动时,你可以更新到公共的版本库中。这通常称为pushing。
Note公共版本库是可以被映像的,上的git公共版本库也是这样管理的。