我需要从GitHub下载Facebook API。通常,我只需单击“下载”选项卡下载最新的源代码。在这种情况下,我需要一个较旧的提交:91f256424531030a454548693c3a6ca49ca3f35a,但我不知道如何从该提交中获取整个项目。
有人可以告诉我该怎么做吗?
(顺便说一句,我在Mac上。不知道这是否有所不同。)
答案 0 :(得分:181)
首先,使用git克隆存储库,例如用:
git clone git://github.com/facebook/facebook-ios-sdk.git
下载存储库的完整历史记录,因此您可以切换到任何版本。接下来,转换到新克隆的存储库:
cd facebook-ios-sdk
...并使用git checkout <COMMIT>
更改为正确的提交:
git checkout 91f25642453
这会给你一个警告,因为你不再在一个分支上,并且已经直接切换到特定版本。 (这被称为“独立的HEAD”状态。)因为听起来好像你只想使用这个SDK而不是积极开发它,所以这不是你需要担心的事情,除非你有兴趣找到它更多关于git的工作原理。
答案 1 :(得分:116)
我不知道您发布此问题时是否存在,但下载提交的最佳和最简单的方法是在查看存储库时单击提交选项卡。然后,不要单击提交名称,而是单击在历史记录按钮中浏览存储库,并在提交名称/右侧使用&lt;&gt; 符号消息,最后是单击克隆或下载按钮时出现的下载ZIP 按钮。
我希望它可以帮助你们。
答案 2 :(得分:20)
答案 3 :(得分:7)
我发现恢复丢失提交(仅存在于github而非本地)的最简单方法是创建一个包含此提交的新分支。
git pull
新分支到本地答案 4 :(得分:6)
要使用7位SHA1短格式下载提交,请执行以下操作:
工作示例:
https://github.com/python/cpython/archive/31af650.zip
说明:
`https://github.com/username/projectname/archive/commitshakey.zip`
如果你有长哈希键
31af650ee25f65794b75d4dfefed6fe4758781c1
,只需获得前7个字符31af650
。这是GitHub的默认设置。
答案 5 :(得分:1)
尝试以下命令序列:
$ git fetch origin <copy/past commit sha1 here>
$ git checkout FETCH_HEAD
$ git push origin master
答案 6 :(得分:0)
除了已接受的答案:
要查看散列,您需要使用建议的命令“ git checkout hash ”,可以使用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
。
如果要最后一次提交,可以使用git checkout master~n
。例如,使用git checkout master~2
将为您提交hash333
。
答案 7 :(得分:0)
问题标题不明确。
答案 8 :(得分:0)
您也可以按 y 键(Github Help,Keyboard Shortcuts)而不是浏览提交,以获取当前修订/提交的“永久链接”。
这会将URL从https://github.com/<user>/<repository>
(主服务器/ HEAD)更改为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
。
答案 9 :(得分:0)
写下来查看您的提交
git log --oneline
复制要返回的提交的名称。然后写:
git checkout "name of the commit"
执行此操作时,该提交的文件将替换为当前文件。然后您就可以对它们进行任何操作,完成后,您可以编写以下命令将当前文件提取到另一个新创建的分支中,这样您所做的任何操作都不会对之前提取的分支造成任何危险从
提交git checkout -b "name of a branch to extract the files to"
现在,您已将指定提交的内容放入另一个分支。
答案 10 :(得分:-1)
如果您想要进行任何特定提交或想要任何特定提交的代码,那么您可以使用以下命令:
git checkout <BRANCH_NAME>
git reset --hard <commit ID which code you want>
git push --force
示例:
git reset --hard fbee9dd
git push --force