当我运行'git gui'时,我会得到一个弹出窗口
This repository currently has approximately 1500 loose objects.
然后建议压缩数据库.我以前做过这个,它将松散的对象减少到大约250,但这并不会抑制弹出窗口.再次压缩不会改变松散物体的数量.
我们当前的工作流程需要大量使用'rebase',因为我们正在从Perforce过渡,而Perforce仍然是规范的SCM.一旦Git是规范的SCM,我们将定期进行合并,并且应该大大减轻松散的对象问题.
与此同时,我真的想让这个"有用"的弹出窗口消失.
众所周知,我们可以定期运行git gc以打包对象.git/objects.
对于远程中央Git存储库(裸或不),经过多次推送后,下面有很多文件myproj.git/objects; 每次提交似乎都在那里创建一个新文件.
我该如何打包那么多文件?(我的意思是远程中央裸存储库上的那些,而不是本地克隆存储库.)
man git-gc 没有一个明显的答案,我也没有任何运气与谷歌(虽然我可能刚刚使用错误的搜索条款).
我知道您应该偶尔git gc在本地存储库上运行以修剪悬空对象并压缩历史记录等等 - 但是这是一个容易受到同样问题影响的共享裸存储库吗?
如果重要的是,我们的工作流程是多个开发人员从共享网络驱动器上的裸存储库中取出并推送到存储库."中央"存储库是使用创建的git init --bare --shared.
最终更新和修复:这里的解决方案结果是两件事:使用Windows Git而不是Grag Borland 建议的 Cygwin Git ,以及Git配置设置pack.threads = 1和gc.aggressiveWindow = 150.
我有一个大型的本地Git存储库,一个git svn cloneSVN存储库,大约有40,000次提交.我正试图git gc在这个存储库上运行,并且无处可去:
$ git gc --auto
Auto packing the repository for optimum performance. You may also
run "git gc" manually. See "git help gc" for more information.
Counting objects: 25966, done.
Compressing objects: 100% (25249/25249), done.
fatal: Out of memory, malloc failed (tried to allocate 426523986 bytes)
error: failed to run repack
Run Code Online (Sandbox Code Playgroud)
我正在使用4GB RAM的64位双核Win7机器上运行Cygwin中的Git 1.7.5.1.该.git目录目前略高于6.1GB.
我已经尝试过运行 …
我正在共享主机上托管一个git repo.我的repo必然有几个非常大的文件,每次我尝试在repo上运行"git gc"时,我的进程被共享主机提供程序杀死,因为使用了太多内存.有没有办法限制git gc可以消耗的内存量?我希望它可以交换内存使用速度,只需要花一点时间来完成它的工作.
我正在运行一个git gc --aggressive非常大的回购(apx 100 gb).它已经运行了两个晚上,并且在几个小时之后,它一直被困在:"压缩对象:99%(76496/76777)"
如果我Ctrl- C这个过程,后果是什么?我的回购会无法使用吗?我的直觉说不,但我想要一些意见.谢谢!
我有一个像git树
A---B---C topic
/
D---E---F---G master <--
Run Code Online (Sandbox Code Playgroud)
我想删除主题及其上的所有对象.
我记下了主题的SHA ID,然后输入:
git branch -D topic
git gc # <-- I also tried prune here...
git checkout -b temp <SHA1 ID of topic>
Run Code Online (Sandbox Code Playgroud)
在最后一个命令之后,我希望得到一个错误(类似于"不存在的对象ID ......"或类似的那样).但是没有错误,gitk显示与上面相同的树结构?
我错过了什么 - 我认为gc/prune应该删除所有无法访问的对象?
当我运行git gc或运行git repack我的Git存储库时,它会在完成后输出"Total"行.这些数字是什么意思?
来自相当小的存储库的几个示例:
$ git gc
...
Total 576 (delta 315), reused 576 (delta 315)
$ git repack -afd --depth=250 --window=250
...
Total 576 (delta 334), reused 242 (delta 0)
Run Code Online (Sandbox Code Playgroud)
还有一个来自更大的存储库:
$ git gc
...
Total 347629 (delta 289610), reused 342219 (delta 285060)
...
Run Code Online (Sandbox Code Playgroud)
我可以猜出第一个"Total"数是什么:存储库中Git对象(如提交,树和文件)的数量.所有其他人实际上意味着什么?
我已经看了看git-gc(1)和git-repack(1)人的页面,仔细看他们的"又见" S,也和我尝试在谷歌搜索只生产不相关的结果.
是否存在导致git gc --auto运行的命令的确定列表?在GIT-GC(1)手册页简单地说:
- 汽车
使用此选项,git gc检查是否需要任何内务处理; 如果没有,它退出而不执行任何工作.执行可能会创建许多松散对象的操作后,会运行一些git命令
git gc --auto.
(重点补充)
我正在组织从SVN到Git的大型迁移.绝大多数用户将使用Windows PC,其中不可忽视的部分是非技术性的.他们将使用TortoiseGit(因为它与他们已经熟悉的TortoiseSVN非常匹配) - 我注意到TortoiseGit不包含任何git gc手动运行的功能.
不能指望非技术人员必须git gc --auto从适当的工作目录发起"git bash"命令行; 当我们使用MsysGit的"便携式"发行版时,他们将不会拥有"Git GUI Here .."windows shell上下文菜单快捷方式.
是否有理由期待随着时间的推移Git将主要自我维护,或者我是否需要尝试使用非技术性的用户友好的调用方法git gc --auto?