Git克隆特定版本的远程仓库

我大约在一个月前克隆了一个远程git仓库。 远程仓库经历了许多变化,现在变得不稳定了。 现在我需要另一个版本库,版本与我在一个月前克隆的版本相同。

我该怎么做呢?

您可以“重置”您的存储库到任何你想要的提交(例如1个月前)。

使用git-reset :

git clone [remote_address_here] my_repo cd my_repo git reset --hard [ENTER HERE THE COMMIT HASH YOU WANT] 

你可以简单地使用

 git checkout commithash 

在这个序列

 git init git clone `URLTORepository` cd `into your cloned folder` git checkout commithash 

提交哈希看起来像这样“45ef55ac20ce2389c9180658fdba35f4a663d204”

使用git log来查找要回滚的修订版本,并记下提交哈希。 之后,你有两个select:

  1. 如果你打算在修订之后提交任何东西,我build议你签出一个新的分支: git checkout -b <new_branch_name> <hash>

  2. 如果你不打算在修订版本之后提交任何东西,你可以简单的在没有分支的情况下签出: git checkout <hash> – 注意:这将使你的版本库处于“分离的HEAD”状态,这意味着它目前没有连接到任何分支 – 那么你将有一些额外的工作来合并新的提交到一个实际的分支 。

例:

 $ git log commit 89915b4cc0810a9c9e67b3706a2850c58120cf75 Author: Jardel Weyrich <suppressed> Date: Wed Aug 18 20:15:01 2010 -0300 Added a custom extension. commit 4553c1466c437bdd0b4e7bb35ed238cb5b39d7e7 Author: Jardel Weyrich <suppressed> Date: Wed Aug 18 20:13:48 2010 -0300 Missing constness. $ git checkout 4553c1466c437bdd0b4e7bb35ed238cb5b39d7e7 Note: moving to '4553c1466c437bdd0b4e7bb35ed238cb5b39d7e7' which isn't a local branch If you want to create a new branch from this checkout, you may do so (now or later) by using -b with the checkout command again. Example: git checkout -b <new_branch_name> HEAD is now at 4553c14... Missing constness. 

这样你就不会丢失任何信息,所以当它变得稳定的时候,你可以移动到一个更新的版本。

与集中版本控制系统不同的是,Git克隆了整个版本库,所以你不仅可以获得当前的远程文件,而且还可以获取整个历史。 您本地存储库将包括所有这一切。

当时可能有标签标记特定的版本。 如果没有,你可以在本地创build它们。 一个好的方法是使用git log或者更多的可视化工具,如gitk (也许gitk --all所有的分支和标签)。 如果你能发现当时使用的提交哈希,你可以使用git tag <hash>来标记它们,然后在新的工作副本中检查这些git tag <hash> (例如git checkout -b new_branch_name tag_name或者直接用哈希代替标签名)。

你所需要的源代码树在git仓库中仍然可用,但是,你将需要你感兴趣的提交的SHA1。我假设你可以从你拥有的当前克隆中获得SHA1?

如果你能得到那个SHA1,你可以在那里创build一个分支/重置来拥有相同的存储库。

根据Rui的回答命令

当我正在寻找某个作者(例如我自己)的提交时,我将过滤日志

 git log --author=[authorname] 

可能git reset可以解决你的问题。

 git reset --hard -#commit hash-