如果我从 Github 下载一些东西,并且我想在本地清除给定提交后发生的所有内容,我该怎么做?
或者相反,我是否可以在某个时间点下载/克隆存储库?(这将是几个月大的,但我不希望在特定点之后的任何更改出现在我的存储库中)
我知道提交,说它是abc123def
.
Simone 基本上是对的,但是有一个更简单的方法。首先,如前所述,克隆将始终克隆所有内容,您无能为力。但是由于 git 的极快速度,这通常不是问题。克隆后,只需检查您的分支并运行:
git reset --hard abc123def
SE 专业人士的问题:这应该是对 Simone 答案的编辑吗?
克隆存储库涉及下载所有远程 ref 和它们所需的所有提交。(至少我不知道有什么方法可以限制这一点。)
克隆存储库后,您可以自由地为任意提交设置自己的分支。
你可能想要类似git clone -n $url
and的东西git checkout -b mybranch abc123def
。
之后,您应该看到git branch -av
有指向旧提交的分支以及指向新提交的远程分支。
从您的分支开始,所有较新的提交都不再存在。这很可能是你想要的。
如果您真的想从存储库中清除所有较新的提交,则必须删除所有较新的引用(即分支和标签)并用于git gc
清理所有内容。
在 Git 中克隆存储库时,您无法选择特定的修订。您需要克隆整个存储库。
如果您想清除从 HEAD 到某个特定修订的所有更改,您可以计算该修订和 head 之间的提交次数
$ git log --oneline abc123def..HEAD | wc -l
然后运行 reset 传递您要删除的提交数(例如 123)
$ git reset --hard HEAD~123