标题基本上.
我只是混一些事情与我.gitignore和我的臃肿.gitDIR到> 100MB(它与总喜欢100commits回购..).
所以我是一个懒惰的人,并想知道是否有可能删除我的历史.我不想改变某些东西或东西,我只是想缩小我的.git目录尺寸.
当没有办法做到这一点时,我只是让git clone --depth 1我的回购获得同样的效果.
这是两个相互冲突的目标:
删除历史记录意味着一个全新的存储库(rm -Rf .git,git init .):这意味着您必须使用 a 强制推送新的本地存储库git push --force,同时也会破坏远程存储库上的历史记录,
保持远程存储库完整意味着在本地使用,从 Git 2.0 开始git clone --depth 1这是安全的,正如我在此处记录的那样(即,您可以从本地浅层存储库推回到远程存储库)
第二种方法似乎最安全:
注意:对于具有完整历史记录的本地存储库,git gc仅此一项git repack不足以真正缩小.git文件夹的大小。
参见“git gc --aggressive对git repack”。
git gc
git repack -Ad # kills in-pack garbage
git prune # kills loose garbage
Run Code Online (Sandbox Code Playgroud)
(这对新克隆的存储库没有多大作用,这只对您已经工作了一段时间的本地存储库有效)另外,如果您在过去的操作中执行了类似的操作git filter-branch,您的文件夹仍然会保留像您这样的.git文件夹.git/refs/original/如果您想减小 的大小,则需要删除.git/。
AFAIU 最初的问题以及我想要如何做到这一点正是不删除
.git文件夹,只是删除 git 日志数据的本地副本以使其状态与之后的状态相同git clone --depth 1
请参阅“将 git 存储库转换为浅层存储库? ”
你可以试试:
cd /my/repo
git show-ref -s HEAD > .git/shallow
git reflog expire --expire=0
git prune
git prune-packed
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
512 次 |
| 最近记录: |