共享git存储库上的哪些操作是安全的?
问题描述:
使用--shared
选项克隆git存储库时,哪些操作在源存储库上安全?特别是,如果在原始存储库中运行git fetch origin
,克隆的存储库是否会损坏?共享git存储库上的哪些操作是安全的?
例如,给定资料库~/repos/foo.git
(它是一个裸露的git仓库),当我创建使用git clone --shared ~/repos/foo.git
新的存储库,然后里面~/repos/foo.git
我跑git fetch origin
,可以克隆库成为腐败?
答
很难想出一个规范的来源,说明git-fetch
是否删除孤立的对象(即,如果它曾经触发git gc --auto
)。但是如果你想确保自动垃圾回收从不运行时,你可以在你裸露的,源库的配置坚持这样的:
git config --global gc.auto 0
这将防止它自动运行GC。除auto-gc之外,git-fetch
不会删除对象(它可能会根据您的配置删除引用,但最糟糕的是将对象设置为孤立,只要您从未GC)。 git-fetch
的联机帮助页明确指出,只要不删除现有对象,源代码回购中的任何操作都可以。