如何从GitHub项目获得特定的提交

我需要从GitHub下载Facebook API.通常,我只需单击“下载”选项卡即可下载最新的源代码。在这种情况下,我需要一个旧的提交:91f256424531030a454548693c3a6ca49ca3f35a,但我不知道如何从该提交中获得整个项目。

有人能告诉我怎么做吗?

(顺便说一句,我用的是苹果电脑。不知道这是否有什么区别)。

307852 次浏览

首先,使用Git克隆存储库,例如:

git clone git://github.com/facebook/facebook-ios-sdk.git

这将下载存储库的完整历史记录,因此您可以切换到任何版本。接下来,更改为新克隆的存储库:

cd facebook-ios-sdk

...并使用git checkout <COMMIT>更改为正确的提交:

git checkout 91f25642453

这将给你一个警告,因为你不再在一个分支上,并且已经直接切换到一个特定的版本。(这就是所谓的“分离头”状态。)因为听起来好像您只想使用这个SDK,而不是主动开发它,所以这不是您需要担心的事情,除非您有兴趣了解有关Git如何工作的更多信息。

我不知道当你发布这个问题时它是否在那里,但下载提交的最好和最简单的方法是在查看存储库时单击承诺选项卡。然后,不要单击提交名称,而是单击在历史记录的这一点上浏览存储库按钮,并在提交名称/消息的右侧单击<;>符号,最后单击下载ZIP按钮,该按钮在您单击克隆或下载按钮时出现。

希望对你们有帮助。

希文的答案在GIF中enter image description here

1.点击GitHub中的提交

2.选择每次提交右侧的“浏览代码”。

3.单击“下载ZIP ”,这将在提交时下载源代码

我发现恢复丢失的提交(只存在于GitHub上,而不是本地)的最简单方法是创建一个包含此提交的新分支。

  1. 打开提交(URL如:github.com/org/repo/commit/long-commit-Sha)
  2. 点击右上方的“浏览文件”
  3. 单击左上方的下拉菜单“ Tree:Short-Sha..”
  4. 键入新的分支名称
  5. git pull将新分支下传到本地

如果你想去任何特定的提交或想要任何特定提交的代码,那么你可以使用下面的命令:

git checkout <BRANCH_NAME>
git reset --hard  <commit ID which code you want>
git push --force

示例:

 git reset --hard fbee9dd
git push --force

要使用7位SHA1短格式下载提交,请执行以下操作:

工作示例:

https://github.com/python/cpython/archive/31af650.zip

描述:

 `https://github.com/username/projectname/archive/commitshakey.zip`

如果您有31af650ee25f65794b75d4dfefed6fe4758781c1的长散列键,则只需获取ABC__1__的前7个字符。这是GitHub的默认设置。

作为对公认答案的补充:

要查看哈希,您需要使用建议的命令“ git checkout哈希 ”,您可以使用git log。然而,根据您的需要,有一种比复制/粘贴哈希更简单的方法。

您可以使用git log --oneline以更压缩的格式读取许多提交消息。

假设您看到的是一个单行提交列表,其中包含最少的信息和部分可见的哈希:

hash111 (HEAD -> master, origin/master, origin/HEAD)
hash222 last commit
hash333 I want this one
hash444 did something
....

如果要last commit,可以使用git checkout master^^为您提供提交以前主服务器。所以hash222

如果需要第n个最后提交,可以使用git checkout master~n。例如,使用git checkout master~2将为您提供提交hash333

问题标题不明确。

除了在提交中导航,您还可以点击是的键(GitHub帮助键盘快捷键),以获取当前修订/提交的“永久链接”。
这会将URL从https://github.com/<user>/<repository>(主/头)更改为https://github.com/<user>/<repository>/tree/<commit id>

为了下载特定的提交,您需要从该URL重新加载页面,因此Clone or Download按钮将指向“快照”https://github.com/<user>/<repository>/archive/<commit id>.zip 而不是最新的https://github.com/<user>/<repository>/archive/master.zip

尝试以下命令序列:

$ git fetch origin <copy/past commit sha1 here>
$ git checkout FETCH_HEAD
$ git push origin master

写这个来看看你的承诺。

git log --oneline

复制要返回的提交的名称。然后写:

git checkout "name of the commit"

执行此操作时,该提交的文件将替换为当前文件。然后,您可以对这些文件执行任何操作,完成后,您可以编写以下命令,将当前文件提取到另一个新创建的分支中,这样无论您做什么,都不会对您从中提取提交的前一个分支造成任何危险

git checkout -b "name of a branch to extract the files to"

现在,您将指定提交的内容提交到另一个分支中。