2011-10-20 45 views
98

我需要從GitHub下載Facebook API。通常情況下,我只需點擊「下載」選項卡下載最新的源代碼,在這種情況下,我需要一個較舊的提交:91f256424531030a454548693c3a6ca49ca3f35a,但我不知道如何從該提交中獲取整個項目...如何從GitHub項目獲得某些提交

可有人請使用Git,例如用告訴我如何做到這一點

(BTW,即時通訊在Mac上不知道有什麼差別。)

+1

另請參見http://stackoverflow.com/questions/13636559/how-to-download-zip-from-github-for-a-particular-commit-sha如果你「只」需要「壓縮-snapshot碼」。 –

+1

您應該考慮更改您接受的答案,最上面的答案要簡單得多。 –

回答

138

首先,克隆庫:?

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

下載完整的回購記錄sitory,所以你可以切換到任何版本。接着,換入新克隆庫:

cd facebook-ios-sdk 

...並使用git checkout <COMMIT>更改爲正確的承諾:

git checkout 91f25642453 

這將會給你一個警告,因爲你已不再是一個分支,並直接切換到特定版本。 (這被稱爲「分離HEAD」狀態)。由於聽起來好像您只想使用此SDK,而不是積極開發它,所以您不必擔心這一點,除非您有興趣查找更多關於git如何工作的信息。

+4

在這一點上,如果你只是想要文件,你也可以'git export'。 – Xeoncross

103

我不知道當你發佈這個問題時是否在那裏,但下載提交的最好和最簡單的方法是在查看存儲庫時單擊提交選項卡。然後,而不是點擊提交名稱,點擊瀏覽存儲庫在歷史按鈕,這一點與<>符號提交名稱/郵件的右側,最後在下載ZIP按鈕當您點擊克隆或下載按鈕時出現。

我希望它可以幫助你們。

+9

更容易。謝謝。 – ow3n

+3

這是恢復「丟失的提交」的唯一方法,即提交github確實有歷史記錄,但從「官方」git時間表中刪除。使用這個,你可以得到一個被遺忘的提交的zip快照,將該提交推送到一個新的分支,將該分支提取到一個現有的repo中,並將其選回存在。 – Ajax

+0

@Ajax這是不正確的。你仍然可以使用'git reflog'獲得sha,然後檢出分離的提交 –

15

斯萬在GIF回答enter image description here

在github上提交

1.Click

每個右側

2.Select瀏覽代碼提交

3.Click上下載的zip,這將下載源代碼在提交時間點

+0

你好suraj你能告訴我你是如何創建屏幕的gif? –

+0

使用快速時間播放器錄製屏幕視頻。使用任何可用的工具將視頻轉換爲GIF。谷歌它。@ Rahul Satal –

+0

謝謝@SurajKThomas的gif – Sivan

3

我發現恢復丟失的提交(只存在於github而不是本地)的最簡單方法是創建一個包含此提交的新分支。

  1. 有承諾開放(URL,如:github.com/org/repo/commit/long-commit-sha)
  2. 點擊 「瀏覽文件」 右上角
  3. 單擊下拉「樹:短...「在頂部的一個新的分支名稱左側
  4. 類型
  5. git pull新的分支到本地
+0

這個答案比接受的更普遍。我遇到了這種情況,我想要的提交已經在master分支上消失了,而Github不會保留每個提交到非現有分支上的提交。所以這種方法將在Github上創建一個新的分支並使其可以實現。 –

+0

這讓我可以從已刪除的分支中恢復提交(原始SHA保持原樣)。在創建新的分支後,我打開了上游回購的PR提交,然後做了「瀏覽文件」。然後我複製了該URL並用我自己的用戶名替換了用戶名。然後點擊Tree:下拉菜單並在我的叉子中創建一個新分支。工作很棒! –

0

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

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

例子:

git reset --hard fbee9dd 
git push --force 
+0

這很危險,克隆回購和檢出版本更有意義 – user1767754

2

只下載交流ommit使用7位SHA1簡稱做到:

工作實例:

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

說明:

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

如果你有長哈希鍵31af650ee25f65794b75d4dfefed6fe4758781c1,只是得到前7個字符31af650。這是GitHub的默認設置。

相關問題