如何从GitHub项目获得某些提交

w00*_*w00 137 git github

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

有人可以告诉我该怎么做?

(顺便说一句,我在Mac上.不知道这是否有任何区别).

Mar*_*air 192

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

git clone git://github.com/facebook/facebook-ios-sdk.git
Run Code Online (Sandbox Code Playgroud)

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

cd facebook-ios-sdk
Run Code Online (Sandbox Code Playgroud)

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

git checkout 91f25642453
Run Code Online (Sandbox Code Playgroud)

这会给你一个警告,因为你不再在一个分支上,并直接切换到一个特定的版本.(这被称为"独立的HEAD"状态.)因为听起来好像你只想使用这个SDK而不是积极开发它,所以这不是你需要担心的事情,除非你有兴趣找到它更多关于git的工作原理.

  • 此时,如果您只想要文件,也可以`git export`. (4认同)

Siv*_*van 126

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

我希望它可以帮助你们.

  • 更容易.谢谢. (11认同)
  • 这是恢复"丢失的提交"的唯一方法,这些提交是github确实具有历史记录但是从"官方"git时间线中删除的提交.使用这个,您可以获得一个提交的zip快照,该提交被重新设置为遗忘,将该提交推送到新分支,将该分支提取到现有的repo中,然后将其恢复原状. (3认同)

Sur*_*mas 21

Sivan的回答用gif 在此输入图像描述

1.点击github中的提交

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

3.单击下载zip,它将在提交时下载源代码


Md.*_*ana 10

尝试以下命令序列:

$ git fetch origin <copy/past commit sha1 here>
$ git checkout FETCH_HEAD
$ git push origin master
Run Code Online (Sandbox Code Playgroud)

  • 如果提交仍然存在于 github 上,但 PR 已被压缩合并且原始分支已被删除,这是迄今为止我见过的最佳答案。 (4认同)

use*_*754 8

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

工作示例:

https://github.com/python/cpython/archive/31af650.zip  
Run Code Online (Sandbox Code Playgroud)

描述:

 `https://github.com/username/projectname/archive/commitshakey.zip`
Run Code Online (Sandbox Code Playgroud)

如果您有较长的哈希键31af650ee25f65794b75d4dfefed6fe4758781c1,只需获取前7个字符31af650。这是GitHub的默认设置。


Jef*_*eff 7

我发现恢复丢失提交(仅存在于github而非本地)的最简单方法是创建一个包含此提交的新分支.

  1. 提交打开(网址:github.com/org/repo/commit/long-commit-sha)
  2. 单击右上角的"浏览文件"
  3. 单击左上角的"Tree:short-sha ..."下拉列表
  4. 输入新的分支名称
  5. git pull 新的分支到当地