我使用(只是使用不开发(其他人的 git 存储库,但我不想要整个历史。
看来"git 克隆 --深度 1">符合我的要求。
但
1( 如何像执行"git 克隆 --depth 1">一样修剪现有存储库?
2( 如何在没有历史记录的情况下更新存储库,以便存储库仅保留上次提交?
假设 reop 的历史记录是 A-B-C,我执行"git clone --depth 1",所以我得到了 C 的存储库。然后上游更新存储库,历史记录变为A-B-C-D-E。我可以做一些简单的操作,所以我得到一个 E 的回购吗? 删除存储库并再次执行"git clone --depth 1"?
我想要这个,因为某些存储库的历史记录太大,.git 可能是 100M+,而且我的互联网访问不是那么稳定,所以我只想要最后一次更新。
溶液
1( 使现有回购变浅:
git rev-parse HEAD > .git/shallow
git reflog expire --all --expire=now
git gc --aggressive --prune=now
2( 更新浅存储库:
git fetch origin master --depth=1
git reset --hard origin/master
多次更新后,您可以:
git reflog expire --all --expire=now
git gc --aggressive --prune=now
以再次删除旧的提交和文件。
裁判
如何更新 git 浅层克隆?
减小 git 存储库大小
因此,您在本地有一个克隆的 git 存储库。您只想获取最新版本的主分支。
git pull origin master --depth=1
这将检索主分支中最新的 1 个提交,并将其合并到本地存储库中。如果您对本地版本进行了任何更改,这可能会引入您必须处理的合并冲突,但 OP 指示它们并非如此。