I need to download the Facebook API from GitHub. Normally, I just click on the \'Downloads\" tab to download the latest source code. In this case, I need an older commit: 91
I don't know if it was there when you had posted this question, but the best and easiest way to download a commit is to click on the commits tab when viewing a repository. Then instead of clicking on the commit name, click on Browse the repository at this point in the history button with <> symbol to the right side of the commit name/message, and finally on the Download ZIP button that comes when you click Clone or Download button.
I hope it helps you guys.
First, clone the repository using git, e.g. with:
git clone git://github.com/facebook/facebook-ios-sdk.git
That downloads the complete history of the repository, so you can switch to any version. Next, change into the newly cloned repository:
cd facebook-ios-sdk
... and use git checkout <COMMIT>
to change to the right commit:
git checkout 91f25642453
That will give you a warning, since you're no longer on a branch, and have switched directly to a particular version. (This is known as "detached HEAD" state.) Since it sounds as if you only want to use this SDK, rather than actively develop it, this isn't something you need to worry about, unless you're interested in finding out more about how git works.
As addition to the accepted answer:
To see the hashes you need to use the suggested command "git checkout hash", you can use git log
. Hoewever, depending on what you need, there is an easier way than copy/pasting hashes.
You can use git log --oneline
to read many commit messages in a more compressed format.
Lets say you see this a one-line list of the commits with minimal information and only partly visible hashes:
hash111 (HEAD -> master, origin/master, origin/HEAD)
hash222 last commit
hash333 I want this one
hash444 did something
....
If you want last commit
, you can use git checkout master^
. The ^
gives you the commit before the master. So hash222
.
If you want the n-th last commit, you can use git checkout master~n
. For example, using git checkout master~2
would give you the commit hash333
.
Instead of navigating through the commits, you can also hit the y key (Github Help, Keyboard Shortcuts) to get the "permalink" for the current revision / commit.
This will change the URL from https://github.com/<user>/<repository>
(master / HEAD) to https://github.com/<user>/<repository>/tree/<commit id>
.
In order to download the specific commit, you'll need to reload the page from that URL, so the Clone or Download
button will point to the "snapshot" https://github.com/<user>/<repository>/archive/<commit id>.zip
instead of the latest https://github.com/<user>/<repository>/archive/master.zip
.
write this to see your commits
git log --oneline
copy the name of the commit you want to go back to. then write:
git checkout "name of the commit"
when you do this, the files of that commit will be replaced with your current files. then you can do whatever you want to these and once you're done, you can write the following command to extract the current files into another newly created branch so whatever you make doesn't have any danger for the previous branch that you extracted a commit from
git checkout -b "name of a branch to extract the files to"
right now, you have the content of a specified commit, into another branch .