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