如何在Git中,从指定日期克隆远程(GitHub)仓库

24

我想要从特定日期克隆一个git仓库。即使这不可能,是否可以将git仓库克隆下来,然后回滚到某个日期?

例如:我的仓库自2010年5月以来已经更新,但我想要获取6月5日的版本。我希望运行以下命令:

git clone git@github.com:projectfolder -date 06-05-2010
5个回答

30
克隆代码库将提供所有源代码的提交历史记录。
您只需要通过查看git日志并在目标日期上找到所需的提交即可。 运行“ git checkout SHA ”,其中“ SHA ”是提交哈希,将为您提供该日期的源代码状态。
编辑: git log --since=2010-06-05 --until=2010-06-06 将有助于缩小范围!

你的分支似乎还没有任何提交。我该如何将分支设置为从远程获取的默认值? - VityaSchel

6
git clone git@github.com:projectfolder
git reset --hard $(git rev-list -1 $(git rev-parse --until=2010-06-06) master)

5
也许可以尝试这样做:
使用命令 git log --since=2010-06-05 --until=2010-06-05 查找您喜欢的提交ID,然后执行 git checkout <checkout id>

3
该死。当你回答时,我正在编辑我的答案以添加该确切命令! - Jake Wharton
5
没问题,我们都会遇到这种情况 :) - Chuck Vose

3

你可以使用git的revert命令将每个提交回滚到你想要的日期,或者你可以在你感兴趣的提交处创建一个新分支。


4
回滚会放弃任何更新的历史记录,这通常不是一个好选择。相较于回滚,从提交中创建一个新分支会更受欢迎。 - Jake Wharton
这是具有破坏性的,而且有更好的方法来做这件事。 - Daenyth

1
考虑以下提交:
5 May (A) -- 7 May -- master (current)
5 May (B) -- 7 May /

Git 没有办法确定你想提交 A 还是 B。因此,你应该使用 git loggitk 获取你想要的日期的 SHA1 提交 ID,然后使用 git checkout 命令检出它。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接