GitHub: ค้นหาไฟล์เวอร์ชันเก่า


103

ฉันรู้ว่าการใช้ GitHub ฉันสามารถค้นหาไฟล์เวอร์ชันปัจจุบันทั้งหมดของฉันใน repo ได้ อย่างไรก็ตามฉันต้องการค้นหาไฟล์ repo เวอร์ชันเก่ากว่าด้วย ตัวอย่างเช่นสมมติว่าฉันเคยมีฟังก์ชันชื่อ get_info () ในโค้ดของฉัน แต่ลบไปหลายเวอร์ชันแล้วเป็นไปได้ไหมที่จะค้นหา get_info และค้นหาโค้ด หากไม่สามารถใช้ GitHub เป็นไปได้จากบรรทัดคำสั่ง git?

แก้ไข

ขอบคุณ @Mark Longair ที่แสดงให้เห็นว่าสามารถทำได้จากบรรทัดคำสั่ง git หากไม่สามารถทำได้ใน GitHub มันจะเป็นคุณสมบัติที่ยอดเยี่ยมที่จะมี

คำตอบ:


125

ขณะนี้ฉันไม่เชื่อว่าจะสามารถค้นหาในประวัติทั้งหมดของรหัสของที่เก็บบนเว็บไซต์ github - สิ่งที่ใกล้เคียงที่สุดคือการค้นหาภายในโค้ดปัจจุบันของที่เก็บด้วยตัวเลือก "การค้นหาโค้ด" ในหน้านี้

แต่จากบรรทัดคำสั่งที่คุณสามารถหาได้กระทำใด ๆ ที่นำมาใช้หรือเอาออกเส้นกล่าวขวัญget_infoกับตัวเลือกในการ-S git logเช่น:

git log -Sget_info -p

(nb ไม่ควรมีช่องว่างระหว่าง-Sและข้อความค้นหา)

(หมายเหตุด้วย: เพื่อค้นหามากกว่าหนึ่งคำให้ล้อมรอบ'):

git log -S'get info' -p

ดังนั้นอย่างน้อยที่สุดที่ควรจะพบการกระทำที่ฟังก์ชันถูกนำมาใช้ครั้งแรกและฟังก์ชันที่ลบออก ฉันได้เพิ่มเข้าไป-pเพื่อให้คุณสามารถดูแพตช์ได้ - หากมีการเปลี่ยนแปลงจำนวนมากแนะนำการเปลี่ยนแปลงที่กล่าวถึงฟังก์ชันที่อาจเป็นประโยชน์ หากฟังก์ชันอยู่ในสาขาอื่นเท่านั้นการใช้--allเพื่อค้นหาสาขาทั้งหมดอาจมีประโยชน์เช่นกัน

Jefromiชี้ให้เห็นในความคิดเห็นด้านล่างว่า git 1.7.4 จะแนะนำ-Gตัวเลือกนี้เป็นทางเลือก - การเปลี่ยนแปลงนี้สรุปไว้ในบล็อกโพสต์ล่าสุดจาก Junio ​​Hamano (ผู้ดูแลระบบ git): http://gitster.livejournal.com/48191.html


2
ใช่ฉันรู้ว่าฉันค้นหาความคิดเห็นได้ แต่จะค้นหาโค้ดได้อย่างไร
normski

10
ตัวเลือก -S ไม่มองในรหัส - พบกระทำใด ๆ ที่get_infoมีอยู่ใน diff ที่กระทำแนะนำ คุณอาจสับสนกับ--grepตัวเลือกซึ่งค้นหาข้อความบันทึก
Mark Longair

2
@normski: และเวอร์ชันล่าสุดของ git ได้เพิ่ม-Gตัวเลือกที่คล้ายกันซึ่งใช้ regex แทนสตริงคงที่
Cascabel

@Jefromi: ขอบคุณที่พูดถึง - ฉันได้เพิ่มคำตอบนั้นแล้วหวังว่าจะโอเค
Mark Longair

2
@Anthony Damico: ใช่เพียงแค่อ้างอิงสตริงการค้นหาเช่นgit log -S'get info' -p
Mark Longair
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.