在共享git存储库上哪些操作是安全的?
使用在共享git存储库上哪些操作是安全的?,git,Git,使用--shared选项克隆git存储库时,在源存储库上哪些操作是安全的?具体来说,如果在原始存储库中运行git fetch origin,克隆的存储库是否会损坏 例如,给定的存储库~/repos/foo.git(它是一个裸git存储库),当我使用git clone--shared~/repos/foo.git创建一个新的存储库时,然后在~/repos/foo.git内运行git fetch origin,克隆的存储库是否会损坏?很难找到一个规范的源代码来说明git fetch是否曾经删除孤立对
--shared
选项克隆git存储库时,在源存储库上哪些操作是安全的?具体来说,如果在原始存储库中运行git fetch origin
,克隆的存储库是否会损坏
例如,给定的存储库
~/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。除了自动gc之外,
git fetch
不会删除对象(它可能会根据您的配置删除引用,但最糟糕的是会使对象成为孤立对象,只要您不使用gc就可以了)。git-fetch
的手册页明确指出,只要源repo中的任何操作不删除现有对象,它们都是正常的。很难找到一个规范的源代码来说明git-fetch
是否删除过孤立对象(即,如果它触发了git-gc--auto
)。但是,如果您想确保自动垃圾收集永远不会运行,可以将其粘贴到裸源存储库的配置中:
git config --global gc.auto 0
这将阻止它自动运行GC。除了自动gc之外,git fetch
不会删除对象(它可能会根据您的配置删除引用,但最糟糕的是会使对象成为孤立对象,只要您不使用gc就可以了)。git fetch
的手册页明确指出,只要源repo中的任何操作不删除现有对象,它们都是正常的