相关疑难解决方法(0)

如何从Git存储库中的提交历史记录中删除/删除大文件?

偶尔我会把一个DVD-rip放到一个网站项目中,然后不小心git commit -a -m ...,然后,zap,回购邮件被2.2演出臃肿.下次我做了一些编辑,删除了视频文件,并提交了所有内容,但是历史记录中的压缩文件仍然存储在存储库中.

我知道我可以从那些提交开始分支并将一个分支重新绑定到另一个分支.但是我应该怎么做才能将2个提交合并在一起,以便大文件没有在历史记录中显示并在垃圾收集过程中被清除?

git version-control git-rebase git-rewrite-history

646
推荐指数
17
解决办法
22万
查看次数

使用Git和Mercurial进行部分克隆

是否有可能只在Git和Mercurial中克隆一个分支(或来自给定的提交)?我的意思是,我想要克隆一个中央回购,但由于它很庞大,我只想获得它的一部分,并且仍能够回馈我的变化.可能吗?比如,我只想从Tag 130开始或类似的东西?

如果是这样,怎么样?

git mercurial

73
推荐指数
4
解决办法
3万
查看次数

如何使用git repack -a -d --depth = 250 --window = 250

我已经看到git gc --aggressive --prunegit repack -a -d --depth=250 --window=250建议减少本地.git文件夹的大小,其中不需要长的本地历史记录.从我的阅读看起来似乎git-repack是首选,有人可以对此发表评论吗?

我真正想知道的是如何对价值决定depthwindow.我使用git来提交,推送,拉取和合并,我不知道delta链或对象窗口是什么.

git

19
推荐指数
2
解决办法
6528
查看次数

Git垃圾收集似乎没有完全奏效

我有点困惑,如何彻底清理我的垃圾......

git count-objects -v -H

warning: garbage found: ./objects/pack/gc_7174754666377259454.idx_tmp
warning: garbage found: ./objects/pack/gc_7174754666377259454.pack_tmp
warning: garbage found: ./objects/pack/pack-f5b13f50fe2e4d773028c51f547822e6f2fe720b.bitmap
count: 0
size: 0 bytes
in-pack: 32986
packs: 1
size-pack: 44.14 MiB
prune-packable: 0
garbage: 3
size-garbage: 41.20 MiB
Run Code Online (Sandbox Code Playgroud)

这对我来说意味着我的回购中有41兆的垃圾?

git gc --prune = now --aggressive

Counting objects: 32986, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (31610/31610), done.
Writing objects: 100% (32986/32986), done.
Total 32986 (delta 23902), reused 9080 (delta 0)
Run Code Online (Sandbox Code Playgroud)

当我再次运行计数对象时,我仍然具有相同的输出

    size-garbage: 41.20 MiB
Run Code Online (Sandbox Code Playgroud)

我只是手动删除垃圾文件?至少有一个是非常丰满的.

12/02/2014  02:06 PM …
Run Code Online (Sandbox Code Playgroud)

git garbage-collection

18
推荐指数
1
解决办法
3621
查看次数

删除本地存储库中的历史记录,而不是使用--depth 1再次克隆它

标题基本上.

我只是混一些事情与我.gitignore和我的臃肿.gitDIR到> 100MB(它与总喜欢100commits回购..).

所以我是一个懒惰的人,并想知道是否有可能删除我的历史.我不想改变某些东西或东西,我只是想缩小我的.git目录尺寸.

当没有办法做到这一点时,我只是让git clone --depth 1我的回购获得同样的效果.

git

6
推荐指数
1
解决办法
512
查看次数

裸存储库上的git gc不会清理

我有一个2GB的Git裸仓库,有30000次提交.不幸的是,我多年来已经提前添加了一些大文件,我现在已经使用了这些文件git filter-branch- 请参阅此链接.识别罪犯 - 参见例如此链接 我也清除了许多旧的"测试尝试"分支使用git branch -D BRANCH-NAME.现在好玩的开始了:-)

在我的裸仓库中似乎git gc --aggressive --prune=yes不会减少裸仓库的目录大小,但如果我克隆裸仓库并运行,git gc --agressive --prune=yes那么我的目录大小将下降到50 MB(这真的很棒).

我也尝试过这个好主意,但它没有显示SHAs或任何其他导致切割刀的位置.

我可以真正使用你的输入安全地以系统的方式摆脱我的裸仓库存储.

我读出更多的相关链接,尝试过,但它并没有帮助这个,这个,这个

git version-control

6
推荐指数
1
解决办法
304
查看次数

当我们这样做时git会做什么:git gc - git prune

启动后在后台发生了什么,

  • git gc
  • git prune

输出git gc:

Counting objects: 945490, done. 
Delta compression using up to 4 threads.   
Compressing objects: 100% (334718/334718), done. 
Writing objects: 100%   (945490/945490), done. 
Total 945490 (delta 483105), reused 944529 (delta 482309) 
Checking connectivity: 948048, done.
Run Code Online (Sandbox Code Playgroud)

git prune的输出:

Checking connectivity: 945490, done.
Run Code Online (Sandbox Code Playgroud)

这两个选项有什么区别?

谢谢

git garbage-collection git-gc

6
推荐指数
1
解决办法
1986
查看次数

具有历史深度的紧凑型 Git 存储库

在 Git 中,有一个命令git clone --depth=<depth>可以仅检索特定长度的历史数据。还有一个命令可以通过 use 收集更多历史数据git fetch --depth=<depth>

当我们想从大型存储库中释放一些空间时怎么样?我知道我们可能会使用git gc或者git prune有其他特定的方式--depth=<depth>来减少本地存储库中的提交存储数量吗?并且它还应该保持 SHA1 能够继续使用它。

git

5
推荐指数
1
解决办法
1038
查看次数

清理git服务器上的大文件

有人意外地将一些大型(多GB)二进制文件提交给我自己托管的gitlab存储库,现在每当有人试图从存储库中取出时,服务器就会受到严重打击.

我尝试通过强制推送删除对文件的任何引用,但它似乎仍然影响服务器.有没有办法强制gitlab服务器摆脱它?

我读了一些像filter-branch这样的东西,但我不确定那会对裸仓库做什么,或者我甚至在提交时使用它我不再有引用.

更新:作为参考,这些类型的消息出现在gitlab VM的控制台上:

[ 5099.922896] Out of memory: kill process 6200 (git-upload-pack) score 1053982 or a child
[ 5099.922908] Killed process 6202 (git)
[ 5099.930796] Out of memory: kill process 6200 (git-upload-pack) score 360394 or a child
[ 5099.930807] Killed process 6203 (git)
[ 5099.938875] Out of memory: kill process 6200 (git-upload-pack) score 360394 or a child
[ 5099.938886] Killed process 6203 (git)
[ 5099.951163] Out of memory: kill process 6139 (git-upload-pack) score 324327 or a child
[ …
Run Code Online (Sandbox Code Playgroud)

git gitlab

5
推荐指数
1
解决办法
3423
查看次数

使用git(dokku)部署时出错 - 超时/损坏管道

我现在使用dokku与数字海洋一段时间没有任何问题

现在使用以下命令部署到dokku时遇到问题:

git remote add dokku dokku@some-ip:myapp
git push dokku develop:master
Run Code Online (Sandbox Code Playgroud)

我有以下问题:

Counting objects: 528, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (509/509), done.
packet_write_wait: Connection to some-ip port 22: Broken pipe
fatal: The remote end hung up unexpectedly
error: failed to push some refs to 'dokku@some-ip:myapp'
Run Code Online (Sandbox Code Playgroud)

我试试

  • ServerAliveInterval为ssh客户端设置
  • git config http.postBuffer 209715200/git config ssh.postBuffer 209715200

但它不起作用.我认为这是因为要推送的内容的大小有点高......

谢谢你的帮助!

更新

设置postBuffer值的选项后209715200,我收到以下错误:

Counting objects: 528, done.
Delta compression using up to …
Run Code Online (Sandbox Code Playgroud)

git ssh dokku

5
推荐指数
1
解决办法
743
查看次数