Знайдіть фіксацію на GitHub з урахуванням хеша


286

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

Мене попросили зробити перевірку коду і мені було надано хеш фіксації, однак я намагався шукати в Git, якщо я можу шукати за допомогою хешів фіксації, але нічого не можу знайти.

Чи є спосіб я знайти змінений код просто за допомогою хеша фіксації?


46
Я вважаю надзвичайно химерним, що github не розпізнає хеші в пошукових запитах і показує вам фіксацію, якщо є одна відповідність хешу.
Крейг Рінгер

Насправді @CraigRinger, пошук github буде відповідати хешам, якщо вони з’являються у запиті на виклик . Дійсно, ви можете шукати по всьому Github за семисимвольним хеш-префіксом, якщо хочете. Але це має бути запит на тягнення, а не будь-яке зобов'язання.
Тодд Оуен

4
@ToddOwen Що приємно, але не сенс. Він повинен відповідати хешем фіксування в межах репо, коли ви шукаєте всередині цього репо, це справді дурне, що це не так.
Крейг Рінгер

2
@CraigRinger Це зараз, нарешті! Дивіться мою нову відповідь .
Тодд Оуен

Відповіді:


378

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 35e32b6a00dec02ae7d7c45c6b7106779a124685the -1необхідний, тому що в іншому випадку він би показав усі старі зобов'язання; добре знати, що ви можете використовувати чотири початкові номери хеша (мінімум у моїх тестах), оскільки немає автоматичного заповнення хеша; і ви не можете вказати гілку , як це: git log master -p -1 35e3. Версія Git: 1.7.9.5.
Рафаель Баррос

Ще один примірник, але один дуже важливий: знову ж таки, ви не можете вказати гілку, але вона автоматично шукає локальну та віддалену гілки, коли ви даєте хеш. Отже, так, ви можете шукати певний віддалений відмінність перед об'єднанням у локальний репо командний рядок.
Рафаель Баррос

1
Якщо хтось цікавиться (я був!), Це також працює з першими 8- ма хешами, як на github: github.com/jerith666/git-graph/commit/35e32b6a, так і в командному рядку:git log -p -1 35e32b6a
SimplGy

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 символів, це нормально
Kasun Siyambalapitiya

3
Немає мінімальної довжини для хеша фіксації - 4 символи (знову ж таки, поки він унікальний у всьому сховищі)
qwertzguy

21

Можливість пошуку фіксацій недавно був доданий в GitHub.

Щоб шукати хеш, просто введіть у поле пошуку принаймні перші 7 символів. Потім на сторінці результатів натисніть на вкладку "Здійснення", щоб побачити відповідні коміти (але, як правило master, лише на гілці за замовчуванням ), або на вкладці "Проблеми", щоб побачити запити на витяг, що містять фіксацію.

Щоб бути більш чітким, ви можете додати hash:префікс до пошуку, але це насправді не потрібно.

Також є API REST (на момент написання він ще переглядається).


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.