Temukan komit di GitHub mengingat hash komit

286

Saya cukup baru untuk Github dan telah menemukan masalah amatir-ish.

Saya telah diminta untuk melakukan review kode dan telah diberi hash komit, namun saya telah mencoba mencari di Git jika saya dapat mencari menggunakan hash komit tetapi tidak dapat menemukan apa pun.

Apakah ada cara saya dapat menemukan kode yang diubah hanya dengan menggunakan komit hash?

dopplesoldner
sumber
46
Saya merasa sangat aneh bahwa github tidak mengenali hash dalam pencarian dan menunjukkan kepada Anda komit jika ada satu yang cocok dengan hash.
Craig Ringer
Sebenarnya @CraigRinger, pencarian github akan cocok dengan hash jika terjadi dalam permintaan tarik . Memang, Anda dapat mencari seluruh github untuk awalan hash tujuh karakter jika suka. Tapi itu harus menjadi permintaan tarik, bukan sembarang komitmen.
Todd Owen
4
@ToddOwen Yang bagus, tapi bukan itu intinya. Itu harus cocok hash komit dalam repo ketika Anda mencari di dalam repo itu, itu benar-benar aneh bahwa tidak.
Craig Ringer
2
@CraigRinger Sudah, akhirnya! Lihat jawaban baru saya .
Todd Owen

Jawaban:

378

URL formulir https://github.com/<owner>/<project>/commit/<hash>akan menunjukkan kepada Anda perubahan yang diperkenalkan di komit itu. Sebagai contoh, inilah perbaikan bug terbaru yang saya buat pada salah satu proyek saya di GitHub:

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

Anda juga dapat mempersingkat hash menjadi awalan unik, seperti:

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


Saya tahu Anda baru saja bertanya tentang GitHub, tetapi untuk kelengkapan: Jika Anda memiliki repositori yang diperiksa, dari baris perintah, Anda pada dasarnya dapat mencapai hal yang sama dengan salah satu dari perintah ini (awalan unik juga bekerja di sini):

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

Catatan: Jika Anda memendekkan hash komit terlalu jauh, baris perintah memberi Anda pesan disambiguasi yang bermanfaat, tetapi GitHub hanya akan mengembalikan 404.

Matt McHenry
sumber
saya menemukan ini ketika mencoba untuk melacak pernyataan dalam mongo, dan menemukan bahwa ada pola URL yang sama untuk melihat file tertentu, mengingat hash dari sebuah commit: github.com/$owner/$project/blob/$hash/path /to/file.ext - eg github.com/mongodb/mongo/blob/…
RubyTuesdayDONO
Dalam hal ini: git log -p -1 35e32b6a00dec02ae7d7c45c6b7106779a124685, yang -1diperlukan karena jika tidak akan menampilkan semua olders komit; ada baiknya mengetahui bahwa Anda dapat menggunakan empat angka awal hash (minimum dalam tes saya), karena tidak ada penyelesaian otomatis untuk hash; dan Anda tidak bisa menentukan cabang seperti ini: git log master -p -1 35e3. Versi Git: 1.7.9.5.
Rafael Barros
Satu lagi, tetapi satu yang sangat penting: sekali lagi, Anda tidak dapat menentukan cabang, tetapi secara otomatis mencari cabang lokal dan jauh ketika Anda memberikan hash. Jadi, ya, Anda dapat mencari diff jarak jauh tertentu sebelum menggabungkan ke repo lokal dengan baris perintah.
Rafael Barros
1
Jika ada yang bertanya-tanya (saya!), Ini juga berfungsi dengan 8 hash pertama di github: github.com/jerith666/git-graph/commit/35e32b6a dan pada baris perintah:git log -p -1 35e32b6a
SimplGy
7
Agak bodoh bahwa UI tidak membuat ini lebih mudah daripada itu ... Saya harap permintaan fitur akan membuatnya.
ocroquette
49

Lihat komit tunggal:
https://github.com/<user>/<project>/commit/<hash>

Melihat log:
https://github.com/<user>/<project>/commits/<hash>

Lihat repo lengkap:
https://github.com/<user>/<project>/tree/<hash>

<hash> bisa panjang apa pun asalkan unik.

qwertzguy
sumber
1
jika panjangnya setidaknya 7 karakter tidak apa
Kasun Siyambalapitiya
3
Tidak ada panjang minimum untuk hash komit adalah 4 karakter (sekali lagi, asalkan unik di seluruh repositori)
qwertzguy
21

Kemampuan untuk mencari komit baru-baru ini ditambahkan ke GitHub.

Untuk mencari hash, cukup masukkan setidaknya 7 karakter pertama di kotak pencarian. Kemudian pada halaman hasil, klik tab "Komit" untuk melihat komit yang cocok (tetapi hanya pada cabang default, biasanyamaster ), atau tab "Masalah" untuk melihat permintaan tarik yang mengandung komit.

Agar lebih eksplisit, Anda dapat menambahkan hash: awalan ke pencarian, tetapi itu tidak benar-benar diperlukan.

Ada juga REST API (saat penulisan ini masih dalam pratinjau).

Todd Owen
sumber
2
Saya terkejut bahwa itu benar-benar berfungsi seperti ini. Ini sangat tidak intuitif. Secara default Github akan menampilkan tab "Code", dengan jelas tidak ada hasil di dalamnya. Tidakkah seharusnya itu menunjukkan satu-satunya tab dengan hasil di dalamnya secara default?
summerian
Jadi untuk menjadi jelas, jika Anda memiliki perusahaan Anda menginstal github, Anda dapat menemukan komit dalam repo apa pun dengan mencarinya seperti: https://YourGithubDomain/search?q=YOUR_COMMIT_HASH&type=Commits Perhatikan bahwa saya juga mencoba ini di Github, dan itu juga berfungsi di sana misalnya https://github.com/search?q=38db172d13962ea177c00c9a3b4b3169b317e94b&type=Commits
Brad Parks