我有两个独立的提交.我怎样才能将它们移除,就好像它们从未出现过一样?我不想保存历史记录或其他日志.没有.
我有一个代码库(到现在为止)使用git来存储它的依赖项.存储库本身在这里可用(警告:它是巨大的).不用说,我需要从存储库历史记录中删除依赖项,以便将其减少到合理的大小.
我首先使用David Underhill的说明lib从历史记录中删除目录.然而,即使在这样做之后,存储库仍然超过300M.发布git prune和git repack帮助,但它仍然超过180M.
为了找到任何臃肿的斑点,我发出了
git verify-pack -v .git/objects/pack/pack-*.idx | grep -v chain | sort -k3nr | head
Run Code Online (Sandbox Code Playgroud)
结果如下:
105526b5d3d398b9989d88c2f9fc2d1dc96a85b8斑点35685609 33600527 31978828 d296935e6ac5f3f58b50c789394c9769116e9c34团块35658016 33593241 112485744 50636f931180a32764edadd854968a971a083f8a团块28360290 25897864 233390 b9e4dd37428e879a258f297b7f5bcfb9ba869695团块13108002 11640713 66661788 08d2720b2414aa07ce419b17d5f80c333c7313b7团块12551621 11124009 89231035 6197a478a461275a0396f20c28487e9ae619a5f9团块11975135 11058259 148211988 1 50636f931180a32764edadd854968a971a083f8a 549eb0c73776fd0ede27a2fcb03366f76f45a13c团块9136086 8166649 166451273 5bc0a0f04a7004bc16cfab1c091c6b369fb74049团块9072616 8270262 80951514 741480238a6a6ce612cf089245dd46d6890fba9f团块8858569 8080252 101294029 744226651c55b14c1aa8affb78fba4fdf02b577c团块7412220 6766404 186825167
这就是我被困住的地方.我可以git show看到这些blob并看到它们看起来非常像jar文件,但我无法弄清楚为什么它们仍然在回购中.
查找文件名的各种尝试都失败了.
git repack -a,git repack -ad和git repack -Ad一切似乎都没有影响.
使用git:假设我创建了一个分支,进行了一些提交,然后决定要删除该分支(在合并壁球之后,重新设置了基准。也许有一天我可能有最小的机会要重新访问被压缩的提交,因此,在删除该分支之前,我会创建一个指向该分支的HEAD的标签。
删除分支后,是否可以从该标签创建分支以恢复工作?好的,因此易于测试,但是,该标签将在Git的垃圾回收中保留下来,还是在以后得到GC?
长话短说(除非您好奇,否则无需阅读其余内容)
那我为什么要这么做呢?好吧,我喜欢在合并回master时压缩提交,但是如果这是一个非常有意义的分支,那么如果下一个sprint或3中出现问题,我可能希望有一种方法可以恢复到那些单独的提交。
所以我在考虑将分支压缩回master,删除分支(这样就不会混淆它是否处于活动状态,是否需要合并,或者是否应该进行新的提交),但随后保留一个标记以便在需要时可以重新创建分支。标记技巧会起作用吗?
所以我在个人服务器上使用git,我有一个旧的仓库,我需要更新.我删除了一堆旧文件并提交并推动了更改.我在我的服务器上使用Web UI(Gitlist).当我使用这个GUI下载repo作为zip文件时,它的大小正确,大约41MB.然而,当我克隆回购时,由于其中一个./git/objects/pack文件的大小约为900MB ,因此它更接近于演出.
当它真的应该小得多时,为什么回购如此之大?
After a lot of rebasing a repository to our latest needs our reflog is full of commits and orphan branches. We reached the final state of our reorganization.
While there're branches and commits left with a lot of binary data the repository grew multiple times of its origin size we decided to purge all the old reflog entries and data.
I was digging in the manual but didn't get much smarter experimenting with git-reflog expire
This is an example of …
设置存储库后,在最初的提交中,添加的文件之一包含了不应包含的敏感数据(程序员的个人信息)。是否有可能从git历史中完全删除它?不是整个文件,只有几行包含敏感数据。
该存储库是相当新的,因此没有分支,并且自首次提交以来未修改特定文件。(PS:我是git的新手,我还不了解复杂的命令)