文件共享上的git是否需要显式git gc?
我们是一个开发团队,在windows文件共享上拥有我们的中央存储库 我们的一个开发人员错误地在一个分支上推送了大量的提交。之后,我们从中央存储库中删除了该分支,但显然这并没有真正删除提交 由于它只是一个文件共享,因此文件服务器上没有自动运行文件共享上的git是否需要显式git gc?,git,Git,我们是一个开发团队,在windows文件共享上拥有我们的中央存储库 我们的一个开发人员错误地在一个分支上推送了大量的提交。之后,我们从中央存储库中删除了该分支,但显然这并没有真正删除提交 由于它只是一个文件共享,因此文件服务器上没有自动运行git gc的进程 我们是否需要在中央存储库上显式运行git gc git gc不是由后台服务运行的。当达到应删除对象的特定阈值时,客户端会在执行某些命令(如commit或push)后自动运行该命令。本地存储库也没有处理过程。 git gc不是由后台服务运行的
git gc
的进程
我们是否需要在中央存储库上显式运行
git gc
git gc
不是由后台服务运行的。当达到应删除对象的特定阈值时,客户端会在执行某些命令(如commit
或push
)后自动运行该命令。本地存储库也没有处理过程。git gc
不是由后台服务运行的。当达到应删除对象的某个阈值时,客户端在执行某些命令(如commit
或push
)后自动运行该命令。错误答案阅读注释
git gc
删除已暂存的无法访问的对象(使用git add
),我认为它永远不会删除已提交的文件。错误答案阅读注释
git-gc
删除已暂存的无法访问的对象(使用git-add
),我认为它永远不会删除已提交的文件。正如Daniel所说,存储库位于共享文件系统上的事实对git来说并没有什么特殊之处:这就像此repo位于常规文件系统上一样。因此,没有服务器,只有一堆访问同一存储库的“客户端”Git进程
也就是说,这种情况与通常仅由单个开发人员操作的“普通”本地存储库的情况没有什么不同
正如状态一样,Git确实通过运行Git gc--auto
来对存储库执行某些检查,这可能会检测到需要gc并对其执行检查
所以
git-gc--auto
将由在该存储库上运行的开发人员之一运行的git进程自动生成。这一切都将自行发生
文档中没有明确指定可能触发此操作的精确Git操作。我认为这是因为没有必要对其进行编码(这种GC应该是快速和透明的)git-gc--aggressive
来回收可用空间
不过,您必须记住,如果启用了reflog,您可能希望
- 确保reflog是空的(通过
或更细粒度的方法,如手动从中删除所需的条目)git reflog expire--all
- 没有其他挥之不去的引用(分支或标记)指向不需要的历史
您可能会发现阅读起来很有趣,尤其是讨论中提到的内容。正如Daniel所说,存储库位于共享文件系统上这一事实对Git来说并没有什么特别之处:它就像这个repo位于常规文件系统上一样。因此,没有服务器,只有一堆访问同一存储库的“客户端”Git进程 也就是说,这种情况与通常仅由单个开发人员操作的“普通”本地存储库的情况没有什么不同 正如状态一样,Git确实通过运行
Git gc--auto
来对存储库执行某些检查,这可能会检测到需要gc并对其执行检查
所以
git-gc--auto
将由在该存储库上运行的开发人员之一运行的git进程自动生成。这一切都将自行发生
文档中没有明确指定可能触发此操作的精确Git操作。我认为这是因为没有必要对其进行编码(这种GC应该是快速和透明的)git-gc--aggressive
来回收可用空间
不过,您必须记住,如果启用了reflog,您可能希望
- 确保reflog是空的(通过
或更细粒度的方法,如手动从中删除所需的条目)git reflog expire--all
- 没有其他挥之不去的引用(分支或标记)指向不需要的历史
您可能会发现阅读起来很有趣,尤其是讨论中提到的内容。
git gc
肯定会删除无法通过任何分支或标记访问的提交。@DanielHilgarth:有趣,我不知道这一点。我会留下答案,这样那些不知道这两个问题的人可以学到一些东西:)git gc
当然会删除那些无法通过任何分支或标记访问的提交。@DanielHilgarth:有趣,我不知道。我会留下答案,这样那些不知道这两个问题的人可以学到一些东西:)好的,但是因为没有人在文件服务器上运行任何git命令,那么我需要在那里显式地运行git gc
?@Klashoutbourn:你在服务器上运行命令,即当