Как получить определенный коммит из проекта GitHub - PullRequest
131 голосов
/ 20 октября 2011

Мне нужно загрузить API Facebook с GitHub .Обычно я просто нажимаю на вкладку «Загрузки», чтобы загрузить последний исходный код. В этом случае мне нужен более старый коммит: 91f256424531030a454548693c3a6ca49ca3f35a , но я не знаю, как получить весь проект из этого коммита...

Может кто-нибудь сказать мне, как это сделать?

(Кстати, я на Mac. Не знаю, если это имеет какое-то значение).

Ответы [ 7 ]

185 голосов
/ 20 октября 2011

Сначала клонируйте репозиторий с помощью git, например, с помощью:

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

, который загружает полную историю репозитория, чтобы вы могли переключиться на любую версию.Затем перейдите во вновь клонированный репозиторий:

cd facebook-ios-sdk

... и используйте git checkout <COMMIT> для перехода к правильному коммиту:

git checkout 91f25642453

Это выдаст вам предупреждение, так какВы больше не находитесь на ветке и переключились непосредственно на конкретную версию.(Это называется состоянием «отсоединенного HEAD».) Так как звучит так, как будто вы хотите использовать только этот SDK, а не активно его разрабатывать, вам не о чем беспокоиться, если только вы не хотите узнатьподробнее о том, как работает git.

119 голосов
/ 23 ноября 2012

Я не знаю, был ли он там, когда вы опубликовали этот вопрос, но лучший и самый простой способ загрузить коммит - это нажать на вкладку commitits при просмотре репозитория. Затем вместо того, чтобы щелкнуть имя коммита, нажмите Просмотрите репозиторий на этом этапе истории кнопку с символом <> справа от имени / сообщения фиксации и, наконец, на кнопку Загрузка ZIP , которая появляется при нажатии кнопки Клонирование или Загрузка .

Надеюсь, это поможет вам, ребята.

21 голосов
/ 26 октября 2015

Ответ Сивана в gif enter image description here

1.Нажмите на коммиты в github

2.Выберите код обзора справа от каждого коммита

3.Нажмите на загрузочный zip, который загрузит исходный код в момент фиксации

7 голосов
/ 30 июня 2016

Самый простой способ найти потерянный коммит (который существует только на github, а не локально) - это создать новую ветку, включающую этот коммит.

  1. Открыть коммит (urlкак: github.com/org/repo/commit/long-commit-sha)
  2. Нажмите "Обзор файлов" в правом верхнем углу
  3. Нажмите раскрывающийся список "Дерево: коротко ... "в левом верхнем углу
  4. Введите имя новой ветви
  5. git pull новую ветку вниз до локальной
6 голосов
/ 07 ноября 2017

Чтобы загрузить коммит, используя 7-значную краткую форму SHA1, выполните:

Рабочий пример:

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

Описание:

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

Если у вас длинный хэш-ключ 31af650ee25f65794b75d4dfefed6fe4758781c1, просто получите первые 7 символов 31af650.По умолчанию это GitHub.

0 голосов
/ 14 февраля 2019

В дополнение к принятому ответу:

Чтобы увидеть хэши, вам нужно использовать предложенную команду "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.

Если вы хотите n-тый последний коммит, вы можете использовать git checkout master~n.Например, использование git checkout master~2 даст вам коммит hash333.

0 голосов
/ 11 июля 2017

Если вы хотите использовать какой-либо определенный коммит или кодировать какой-либо определенный коммит, вы можете использовать следующую команду:

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

Пример:

 git reset --hard fbee9dd 
 git push --force
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...