git状态需要很长时间
我正在开发一个项目,其中版本控制系统是SVN,我想要使用git。我做了一个git svn克隆,但git status
工作非常缓慢(约8分钟)。该存储库大约有63000个文件,其中大多数都是被git忽略的库。这是正常的吗?我做了一个git prune && git gc
来执行清理无法访问的对象和垃圾收集。我也做了一个git repack -Adf
但这使事情变得更糟。它需要更长的时间(超过20分钟)。git状态需要很长时间
我在做什么错?这是一个visual studio项目,我假定.gitignore
文件没有包含正确的东西。是否有可能找出哪些文件是从Visual Studio生成的,哪些文件需要版本化?
如果.gitignore
文件不是问题,我怎样才能使我的git status
速度更快,对于具有65000个文件(大约10GB)的项目来说,使用git缓慢工作正常吗?
对于该大小的存储库,git status
和相关命令可能会非常缓慢。当项目被分开和分离时,Git工作得更好,而Subversion倾向于鼓励使用包含多个项目的单个庞然大物存储库,所以使用Git-SVN时这种问题并不少见。
尽管如此,是几个不同的解决方案,你可以用它来加快速度:
如果您尚未升级到使用固态硬盘,而不是一个磁盘。当我在类似的仓库中工作时,这一次更改对Git的速度产生了巨大影响
查看
git help svn
的配置部分。这说明设置Git-SVN以使用Subversion存储库中的跟踪子文件夹(例如trunk/project-a
,branches/*/project-a
,tags/*/project-a
,...)而不是整个存储库。如果这对您的存储库有意义,这意味着您可以拥有更小的结账和更快的运行git status
。看看
git help read-tree
的Sparse Checkout部分。这将通过设置Git来使用稀疏工作副本来讨论,类似于Subversion稀疏检出。同样,这意味着工作副本中会有更少的文件Git跟踪,因此检查它们都会更快。-
考虑在您的工作副本的大型部分设置“假定不变”标志。这将告诉Git不检查文件是否发生了变化。有这样做的方法有两种:
-
要为特定文件夹的标志,运行类似如下:
find <folder-name>... -type f -exec git update-index --assume-unchanged {} +
-
要设置标志整个储存库(注意:这会失去未提交变化):
git config core.ignorestat true git reset --hard HEAD
在01
--assume-unchanged
选项看看和config.ignoreStat
部分git help config
有关这些工作方式的更多信息。使用这些将意味着你需要指定路径命令,如
git diff
和git add
明确,即像裸git diff
命令,git commit -a
&Ç将无法正常工作。 -
更改您的操作系统和/或文件系统。根据Git手册页(与之前的项目符号相同),Windows'
lstat
速度很慢,CIFS文件系统也是如此。我怀疑这个理想在Linux或其他* nix上是类似ext3或ext4的东西。
我也发现git在某些windows环境下速度很慢。你有没有看过http://*.com/questions/4485059/git-bash-is-extremely-slow-in-windows-7-x64?lq=1和http://*.com/questions/2835775/ msysgit-的bash-是-窘况慢式 - 窗口7?LQ = 1? –
完成后会显示'git status'? –
@me_and它显示一个正常的“没有提交”的消息,它只需要很长的时间 –