Найти коммит на GitHub по хешу коммитов


286

Я довольно новичок в Github и столкнулся с проблемой любителя.

Меня попросили сделать обзор кода и мне предоставили хеш коммита, однако я попытался посмотреть в Git, могу ли я искать с использованием хэшей коммитов, но ничего не смог найти.

Есть ли способ найти измененный код, просто используя хеш коммита?


46
Я нахожу совершенно странным, что github не распознает хэши в поисках и показывает вам коммит, если есть один соответствующий хеш.
Крейг Рингер

На самом деле @CraigRinger, поиск в github будет соответствовать хэшам, если они встречаются в запросе на получение . В самом деле, вы можете искать во всем github префикс хеша из семи символов, если хотите. Но это должен быть запрос на удаление, а не просто фиксация.
Тодд Оуэн

4
@ToddOwen Что приятно, но не в этом суть. Он должен соответствовать хэшам коммитов в репо, когда вы выполняете поиск в этом репо, это действительно странно, что это не так.
Крейг Рингер

2
@CraigRinger Это теперь, наконец! Смотрите мой новый ответ .
Тодд Оуэн

Ответы:


379

URL-адрес формы https://github.com/<owner>/<project>/commit/<hash>покажет вам изменения, внесенные в этот коммит. Например, вот недавнее исправление, которое я сделал в одном из моих проектов на GitHub:

https://github.com/jerith666/git-graph/commit/35e32b6a00dec02ae7d7c45c6b7106779a124685

Вы также можете сократить хеш до любого уникального префикса, например так:

https://github.com/jerith666/git-graph/commit/35e32b


Я знаю, что вы только что спросили о GitHub, но для полноты: если вы извлекли хранилище из командной строки, вы можете достичь в основном того же самого с помощью любой из этих команд (здесь также работают уникальные префиксы):

git show 35e32b6a00dec02ae7d7c45c6b7106779a124685
git log -p -1 35e32b6a00dec02ae7d7c45c6b7106779a124685

Примечание. Если вы укоротите хеш коммита слишком далеко, командная строка выдаст вам полезное сообщение об устранении неоднозначности, но GitHub просто вернет 404.


Я столкнулся с этим, когда пытался отследить утверждение в монго, и обнаружил, что есть аналогичный шаблон URL для просмотра конкретного файла, учитывая хеш коммита: github.com/$owner/$project/blob/$hash/path /to/file.ext - например, github.com/mongodb/mongo/blob/…
RubyTuesdayDONO

В этом: git log -p -1 35e32b6a00dec02ae7d7c45c6b7106779a124685, то -1необходимо , потому что в противном случае было бы показать все olders фиксации; хорошо знать, что вы можете использовать четыре начальных числа хэша (минимум в моих тестах), потому что для хэша нет автозаполнения; и вы не можете указать ветку , как это: git log master -p -1 35e3. Версия Git: 1.7.9.5.
Рафаэль Баррос

Еще одно замечание, но одно очень важное: опять же, вы не можете указать ветку, но он автоматически ищет локальные и удаленные ветви, когда вы даете хеш. Итак, да, вы можете искать конкретный удаленный diff перед слиянием с локальным репо из командной строки.
Рафаэль Баррос

1
В случае, если кому-то интересно (я был!), Это также работает с первыми 8 git log -p -1 35e32b6a
хэшами

7
Это довольно глупо, что пользовательский интерфейс не делает это проще, чем сейчас ... Я надеюсь, что запрос функции сделает это.
Окрокет

49

Просмотр отдельного коммита:
https://github.com/<user>/<project>/commit/<hash>

Посмотреть журнал:
https://github.com/<user>/<project>/commits/<hash>

Посмотреть полное репо:
https://github.com/<user>/<project>/tree/<hash>

<hash> может быть любой длины, пока он уникален.


1
если длина не менее 7 символов, это нормально
Касун Сиямбалапития

3
Минимальная длина хеша коммита не
должна

21

Возможность поиска коммитов была недавно добавлена ​​в GitHub.

Чтобы найти хеш, просто введите как минимум первые 7 символов в поле поиска. Затем на странице результатов перейдите на вкладку «Передачи», чтобы увидеть соответствующие коммиты (но обычно только в ветке по умолчанию master), или на вкладке «Проблемы», чтобы просмотреть запросы на извлечение, содержащие коммит.

Чтобы быть более точным, вы можете добавить hash:префикс к поиску, но это не обязательно.

Существует также REST API (на момент написания он все еще находится в предварительном просмотре).


2
Я удивлен, что это действительно работает таким образом. Это не так интуитивно понятно. По умолчанию Github будет отображать вкладку «Код», без каких-либо результатов. Разве не должна отображаться единственная вкладка с результатами по умолчанию?
лето

Итак, чтобы быть ясным, если у вас есть собственная корпоративная установка github, вы можете найти любой коммит в любом репо, выполнив его поиск следующим образом: https://YourGithubDomain/search?q=YOUR_COMMIT_HASH&type=Commits Обратите внимание, что я пробовал это также на Github, и он работал там также, например https://github.com/search?q=38db172d13962ea177c00c9a3b4b3169b317e94b&type=Commits
Brad Parks
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.