ค้นหาการกระทำบน GitHub เนื่องจากแฮชการกระทำ


286

ฉันค่อนข้างใหม่สำหรับ Github และได้พบกับปัญหาสมัครเล่น

ฉันถูกขอให้ทำการตรวจสอบรหัสและได้รับแฮชคอมมิชชันอย่างไรก็ตามฉันได้ลองค้นหาใน Git หากฉันสามารถค้นหาโดยใช้แฮชการคอมมิชชัน แต่ไม่พบสิ่งใดเลย

มีวิธีฉันสามารถค้นหารหัสการเปลี่ยนแปลงเพียงแค่ใช้แฮชการกระทำ?


46
ฉันคิดว่ามันแปลกประหลาดอย่างยิ่งที่ github ไม่รู้จักแฮชในการค้นหาและแสดงให้คุณเห็นถึงความมุ่งมั่นว่ามีแฮชที่ตรงกับแฮชตัวใด
Craig Ringer

ที่จริง @CraigRinger ค้นหา GitHub จะตรงกับแฮชถ้าพวกเขาเกิดขึ้นในคำขอดึง แน่นอนคุณสามารถค้นหาคำนำหน้าแฮชทั้งหมดเจ็ดตัวหากคุณต้องการ แต่มันจะต้องเป็นคำขอดึงไม่เพียงกระทำใด ๆ
Todd Owen

4
@ToddOwen ไหนดี แต่ไม่ใช่ประเด็น ควรจับคู่แฮชยอมรับภายใน repo เมื่อคุณค้นหาภายใน repo นั้นมันแปลกประหลาดอย่างแท้จริงที่มันไม่
Craig Ringer

2
@CraigRinger มันทำตอนนี้ในที่สุด! ดูของฉันคำตอบใหม่
Todd Owen

คำตอบ:


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


ฉันเจอสิ่งนี้เมื่อพยายามติดตามการยืนยันใน mongo และพบว่ามีรูปแบบ URL ที่คล้ายกันเพื่อดูไฟล์ที่ระบุเนื่องจากแฮชของการคอมมิท: github.com/$owner/$project/blob/$hash/path /to/file.ext - เช่นgithub.com/mongodb/mongo/blob/
......

ในการนี้: git log -p -1 35e32b6a00dec02ae7d7c45c6b7106779a124685ที่-1เป็นสิ่งจำเป็นเพราะมิฉะนั้นก็จะแสดงทั้งหมด olders กระทำ; เป็นการดีที่จะรู้ว่าคุณสามารถใช้หมายเลขเริ่มต้นสี่หมายเลขของแฮช (ค่าต่ำสุดในการทดสอบของฉัน) เนื่องจากไม่มีแฮชอัตโนมัติที่สมบูรณ์ git log master -p -1 35e3และคุณไม่สามารถระบุสาขาเช่นนี้: รุ่น Git: 1.7.9.5
Rafael Barros

อีกหนึ่ง obs แต่สิ่งที่สำคัญมาก: อีกครั้งคุณไม่สามารถระบุสาขาได้ แต่จะค้นหาสาขาในพื้นที่และระยะไกลโดยอัตโนมัติเมื่อคุณให้แฮช ใช่คุณสามารถค้นหารีโมตรีโมตที่เจาะจงก่อนที่จะรวมกับ repo โลคัลโดยบรรทัดคำสั่ง
Rafael Barros

1
ในกรณีที่ทุกคนสงสัย (ฉัน!) สิ่งนี้ยังใช้งานได้กับแฮช 8 ตัวแรกบน github: github.com/jerith666/git-graph/commit/35e32b6aและในบรรทัดคำสั่ง:git log -p -1 35e32b6a
SimplGy

7
มันเป็นเรื่องที่โง่ที่ UI ไม่ได้ทำให้มันง่ายกว่านี้อีกแล้ว ... ฉันหวังว่าคำขอคุณลักษณะจะทำให้สำเร็จ
ocroquette

49

ดูการกระทำเดี่ยว:
https://github.com/<user>/<project>/commit/<hash>

ดูบันทึก:
https://github.com/<user>/<project>/commits/<hash>

ดู repo เต็ม:
https://github.com/<user>/<project>/tree/<hash>

<hash> สามารถมีความยาวเท่าใดก็ได้ตราบใดที่มันไม่ซ้ำกัน


1
ถ้าความยาวอย่างน้อย 7 ตัวอักษรก็โอเค
Kasun Siyambalapitiya

3
ไม่มีความยาวขั้นต่ำสำหรับการแฮชการกระทำคือ 4 ตัวอักษร (อีกครั้งตราบใดที่มันไม่ซ้ำกันในพื้นที่เก็บข้อมูลทั้งหมด)
qwertzguy

21

เพิ่มความสามารถในการค้นหาลงใน GitHub

หากต้องการค้นหาแฮชเพียงป้อนอักขระอย่างน้อย 7 ตัวแรกในช่องค้นหา จากนั้นในหน้าผลลัพธ์ให้คลิกแท็บ "มุ่งมั่น" เพื่อดูการจับคู่ที่ตรงกัน (แต่เฉพาะที่สาขาเริ่มต้นปกติmaster) หรือแท็บ "ปัญหา" เพื่อดูคำขอดึงที่มีการส่งข้อมูล

เพื่อให้ชัดเจนยิ่งขึ้นคุณสามารถเพิ่มhash:คำนำหน้าให้กับการค้นหา แต่ไม่จำเป็นจริงๆ

นอกจากนี้ยังมีREST API (ในขณะที่เขียนมันยังอยู่ในหน้าตัวอย่าง)


2
ฉันประหลาดใจที่มันใช้งานได้จริง มันไม่ง่ายเลย โดยค่าเริ่มต้น Github จะแสดงแท็บ "รหัส" โดยไม่มีผลลัพธ์แน่ชัด มันจะไม่แสดงเฉพาะแท็บที่มีผลลัพธ์ใด ๆ อยู่ภายในหรือไม่
ฤดูร้อน

ดังนั้นหากคุณมีการติดตั้ง github ขององค์กรคุณสามารถค้นหาการกระทำใด ๆ ใน repo ใด ๆ โดยการค้นหาดังนี้: https://YourGithubDomain/search?q=YOUR_COMMIT_HASH&type=Commits โปรดทราบว่าฉันลองใช้ Github เช่นกันและทำงานได้ที่นั่นเช่นกัน https://github.com/search?q=38db172d13962ea177c00c9a3b4b3169b317e94b&type=Commits
Brad Parks
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.