我想从 Dropbox 切换到开源 Sparkleshare。它使用 git 进行同步和版本控制。如果说我在文件夹中删除了一个 1GB 文件,它会保留在本地 .git 文件夹的历史记录中。但我希望将这种大量数据放在服务器上而不是客户端上。 如何使用 git 提交我的存储库并删除本地存储库? 非常感谢!
git fetch --depth=1
修剪旧的提交。这使得旧的提交及其对象无法访问。git reflog expire --expire-unreachable=now --all
。使所有旧提交及其对象过期git gc --aggressive --prune=all
删除旧对象根据 koppor 的回答,我创建了这个单行 bash 命令来清除同一基本文件夹中的所有存储库中的本地 git 历史记录:
for d in */; do echo $d && cd "$d" && git fetch --depth=1 && git reflog expire --expire-unreachable=now --all && git gc --aggressive --prune=all; cd ..; done
注意:如果您愿意,您可以将
*/
替换为任何特定文件夹条件,例如 *mobile*/
.
Windows cmd 版本(未经测试):
FOR /D %d IN (*) DO (echo $d && cd "$d" && git fetch --depth=1 && git reflog expire --expire-unreachable=now --all && git gc --aggressive --prune=all & cd ..)
这为我节省了几GB!
在cmd或sh文件中添加以下命令,应该有助于清除历史记录 git fetch --depth=1 修剪旧的提交。这使得旧的提交及其对象无法访问。 git reflog expire --expire-unreachable=now --all。使所有旧提交及其对象过期 git gc --aggressive --prune=all 删除旧对象