如何减少现有git克隆的深度?

问题描述 投票:16回答:4

我有一个克隆。我想减少它的历史,而不是从头开始克隆,减少深度。工作示例:

$ git clone [email protected]:apache/spark.git
# ...
$ cd spark/
$ du -hs .git
193M    .git

好吧,所以不是这样,但它会为这次讨论服务。如果我尝试gc它会变小:

$ git gc --aggressive
Counting objects: 380616, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (278136/278136), done.
Writing objects: 100% (380616/380616), done.
Total 380616 (delta 182748), reused 192702 (delta 0)
Checking connectivity: 380616, done.
$ du -hs .git
108M    .git

尽管如此,相当大(git pull表明它仍然可以向遥控器推送/拉动)。重新包装怎么样?

$ git repack -a -d --depth=5
Counting objects: 380616, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (95388/95388), done.
Writing objects: 100% (380616/380616), done.
Total 380616 (delta 182748), reused 380616 (delta 182748)
Pauls-MBA:spark paul$ du -hs .git
108M    .git

是的,没有变小。 - 重新包装的深度与克隆不同:

$ git clone --depth 1 [email protected]:apache/spark.git
Cloning into 'spark'...
remote: Counting objects: 8520, done.
remote: Compressing objects: 100% (6611/6611), done.
remote: Total 8520 (delta 1448), reused 5101 (delta 710), pack-reused 0
Receiving objects: 100% (8520/8520), 14.82 MiB | 3.63 MiB/s, done.
Resolving deltas: 100% (1448/1448), done.
Checking connectivity... done.
Checking out files: 100% (13386/13386), done.
$ cd spark
$ du -hs .git
17M .git

Git pull表示它仍然与遥控器同步,这让任何人都感到惊讶。

好的 - 那么如何将现有的克隆更改为浅克隆,而不是将其复制并重新检查出来?

git
4个回答
© www.soinside.com 2019 - 2024. All rights reserved.