0

如果我从 Github 下载一些东西,并且我想在本地清除给定提交后发生的所有内容,我该怎么做?

或者相反,我是否可以在某个时间点下载/克隆存储库?(这将是几个月大的,但我不希望在特定点之后的任何更改出现在我的存储库中)

我知道提交,说它是abc123def.

4

3 回答 3

0

Simone 基本上是对的,但是有一个更简单的方法。首先,如前所述,克隆将始终克隆所有内容,您无能为力。但是由于 git 的极快速度,这通常不是问题。克隆后,只需检查您的分支并运行:

git reset --hard abc123def

SE 专业人士的问题:这应该是对 Simone 答案的编辑吗?

于 2012-12-24T04:21:47.323 回答
0

克隆存储库涉及下载所有远程 ref 和它们所需的所有提交。(至少我不知道有什么方法可以限制这一点。)

克隆存储库后,您可以自由地为任意提交设置自己的分支。

你可能想要类似git clone -n $urland的东西git checkout -b mybranch abc123def

之后,您应该看到git branch -av有指向旧提交的分支以及指向新提交的远程分支。

从您的分支开始,所有较新的提交都不再存在。这很可能是你想要的。

如果您真的想从存储库中清除所有较新的提交,则必须删除所有较新的引用(即分支和标签)并用于git gc清理所有内容。

于 2012-12-23T23:07:57.440 回答
0

在 Git 中克隆存储库时,您无法选择特定的修订。您需要克隆整个存储库。

如果您想清除从 HEAD 到某个特定修订的所有更改,您可以计算该修订和 head 之间的提交次数

$ git log --oneline abc123def..HEAD | wc -l

然后运行 ​​reset 传递您要删除的提交数(例如 123)

$ git reset --hard HEAD~123
于 2012-12-23T18:39:09.137 回答