今天,git开始表现得很有趣(好吧,比平时更有趣),坚持git gc
每次合并后都要跑,即使他们是背靠背.
C:\Projects\my-current-project>git pull
remote: Counting objects: 31, done.
remote: Compressing objects: 100% (16/16), done.
remote: Total 16 (delta 11), reused 0 (delta 0)
Unpacking objects: 100% (16/16), done.
From git.company.com:git/
e992ce8..6376211 mybranch/next -> origin/mybranch/next
Merge made by recursive.
Auto packing the repository for optimum performance. You may also run "git gc" manually. See "git help gc" for more information.
FIND: Parameter format not correct
Counting objects: 252732, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (59791/59791), done.
Writing objects: 100% (252732/252732), done.
Total 252732 (delta 190251), reused 252678 (delta 190222)
Removing duplicate objects: 100% (256/256), done.
.../stylesheets/style.css | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
Run Code Online (Sandbox Code Playgroud)
这是非常具有破坏性的,我担心这意味着我的存储库以某种方式损坏(这是我第一次自动看到它gc
).我的恐惧没有根据吗?如果我的存储库没问题,我如何让自动包装停止?!
seh*_*ehe 14
编辑
我想我发现了这个问题.
你可能在Windows上运行Cygwin/git或MsysGit.我注意到了因为
FIND: Parameter format not correct
Run Code Online (Sandbox Code Playgroud)
错误信息.麻烦的是你的钩子脚本(或git内部?!)正在调用find,它找不到UNIX(GNU)查找实用程序,而是找到Windows(MSDOS ...原文如此)FIND.EXE.
您应该能够修复系统范围的路径.如果这不是一个选项,请在脚本中明确指定PATH环境变量(或在调用它们之前)
旧答案的信息:
git gc --auto
并不总是导致采取任何行动; 你确定每次都花时间,或者你刚刚注意到它正在被召唤?
如果每次调用它,你可能会
git bundle --create mybundle.git --all
并且git clone mybundle.git
看看你是否可以"撼动"罪魁祸首可选地,当你动摇了罪魁祸首时,你可以分析你的'清洁'回购和当前回购之间的不同之处.
使用此选项,git gc检查是否需要任何内务处理; 如果没有,它退出而不执行任何工作.执行可能会创建许多松散对象的操作后,某些git命令会运行git gc --auto.
如果存储库中有太多松散的对象或太多的包,则需要内务处理.如果松散对象的数量超过gc.auto配置变量的值,则使用git repack -d -l将所有松散对象合并为单个包.将gc.auto的值设置为0将禁用松散对象的自动打包.
如果包的数量超过gc.autopacklimit的值,则使用git repack的-A选项将现有包(标记为.keep文件的包除外)合并到单个包中.将gc.autopacklimit设置为0将禁用包的自动合并.
我正在添加这个答案,即使它没有回答原始海报的具体问题,因为每次我的一个回购开始自动打包后,我忘记了修复,再次搜索它并首先找到这个问题.
当我的一个repos在每次合并后开始"自动打包存储库以获得最佳性能"时,
git gc --prune=now
Run Code Online (Sandbox Code Playgroud)
解决它.(在Mac上,我没有FIND: Parameter format not correct
问题.)现在我正在使用git 2.4.1,但这对我来说有几个2.*版本.
这个答案要如何从我的混帐回购协议中删除未引用斑点表明,一个可能需要一个明确的引用日志与
git reflog expire --expire-unreachable=now --all
Run Code Online (Sandbox Code Playgroud)
为了使上述命令最有效,但我从来不需要这样做来在每次合并后修复自动打包.
您正在使用什么版本的git?无论如何,我发现自动gc
ing极具破坏性。
git config --global gc.auto 0
归档时间: |
|
查看次数: |
10164 次 |
最近记录: |