在特定的一个之后删除所有提交?或者克隆到特定的提交

时间:2012-12-23 18:18:09

标签: git github

如果我从Github下载了一些东西,并且我想在本地消除给定提交后发生的所有事情,我该怎么办呢?

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

我知道提交,说它是abc123def

3 个答案:

答案 0 :(得分:0)

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

如果要将HEAD中的所有更改消除到一个特定修订版本,您可以计算该修订版本与头部之间的提交数量

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

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

$ git reset --hard HEAD~123

答案 1 :(得分:0)

克隆存储库涉及下载所有远程引用和它们所需的所有提交。 (至少我不知道如何限制这种情况。)

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

您可能想要git clone -n $urlgit checkout -b mybranch abc123def

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

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

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

答案 2 :(得分:0)

Simone基本上是对的,但有一种更简单的方法。首先,正如所说克隆将始终克隆一切,你无法帮助。但是由于git的极速,这通常不是问题。克隆后,只需检查您的分支并运行:

git reset --hard abc123def

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