如何仅在最后一次提交时获取 git 存储库



我使用(只是使用不开发(其他人的 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 指示它们并非如此。