จะดูประวัติไฟล์ใน Git ได้อย่างไร?


133

ด้วยการโค่นล้มฉันสามารถใช้ TortoiseSVN เพื่อดูประวัติ / บันทึกของไฟล์

ฉันจะทำสิ่งนี้กับ Git ได้อย่างไร

เพียงแค่มองหาบันทึกประวัติสำหรับไฟล์ใดไฟล์หนึ่งจากนั้นความสามารถในการเปรียบเทียบเวอร์ชันต่างๆ

คำตอบ:


156

ใช้git logเพื่อดูประวัติการคอมมิต แต่ละคอมมิตมีตัวระบุการแก้ไขที่เกี่ยวข้องซึ่งเป็นคีย์แฮช (เช่น14b8d0982044b0c49f7a855e396206ee65c0e787และb410ad4619d296f9d37f0db3d0ff5b9066838b39) หากต้องการดูความแตกต่างระหว่างการคอมมิตที่ต่างกันสองคอมมิตให้ใช้git diffกับอักขระสองสามตัวแรกของตัวระบุการแก้ไขของคอมมิตทั้งสองดังนี้:

# diff between commits 14b8... and b410...
git diff 14b8..b410
# only include diff of specified files
git diff 14b8..b410 path/to/file/a path/to/file/b

หากคุณต้องการดูภาพรวมเกี่ยวกับความแตกต่างทั้งหมดที่เกิดขึ้นจากการกระทำเป็นคอมมิตให้ใช้git logหรือgit whatchangedด้วยตัวเลือกแพทช์:

# include patch displays in the commit history
git log -p
git whatchanged -p
# only get history of those commits that touch specified paths
git log path/a path/b
git whatchanged path/c path/d

7
ขอบคุณสำหรับเคล็ดลับ -p ซึ่งมีประโยชน์อย่างยิ่งสำหรับการค้นหาว่าการแก้ไขใดเกี่ยวข้องกับโค้ดเล็กน้อย
Christopher Pickslay

100

ดูเหมือนว่าคุณต้องการdiff คอมไพล์และ / หรือเข้าสู่ระบบคอมไพล์ ตรวจสอบgitk ด้วย

gitk path/to/file
git diff path/to/file
git log path/to/file

3
นี่เป็นอีกแง่มุมหนึ่งสำหรับ gitk ซึ่งเป็นวิธีที่ยอดเยี่ยมในการเรียกดูภาพรวมทั้งหมดของไฟล์เดียวใน git repo
Ray Brown

1
ตามค่าเริ่มต้น gitk จะแสดงบริบทที่แตกต่างบวก 10 บรรทัด แต่ถ้าคุณต้องการดูภาพรวมของไฟล์ทั้งหมดล่ะ? เพียงตั้งค่า "เส้นของบริบท" เป็นค่าขนาดใหญ่ (เช่น 100000) จากนั้นคุณสามารถพลิกกลับไปกลับมาระหว่างคอมมิตและดูไฟล์ทั้งหมดในเวลาต่างๆ (คุณสามารถค้นหาภายในไฟล์ได้เช่นกัน)
antinome

35

ฉันชอบใช้gitk name_of_file

นี่แสดงรายการการเปลี่ยนแปลงที่ดีที่เกิดขึ้นกับไฟล์ในแต่ละคอมมิตแทนที่จะแสดงการเปลี่ยนแปลงของไฟล์ทั้งหมด ช่วยให้ติดตามสิ่งที่เกิดขึ้นได้ง่ายขึ้น


30

คุณยังสามารถใช้tigสำหรับเบราว์เซอร์ที่เก็บ git ที่ใช้ ncurses ได้ ในการดูประวัติของไฟล์:

tig path/to/file

29

สิ่งที่ฉันชอบคือgit log -p <filename>ซึ่งจะให้ประวัติของการคอมมิตทั้งหมดของไฟล์ที่กำหนดรวมถึงความแตกต่างของแต่ละคอมมิต


11

เบราว์เซอร์ประวัติ Git จำนวนมากรวมถึงgit log(และ 'git log --graph'), gitk (ใน Tcl / Tk, ส่วนหนึ่งของ Git), QGit (ใน Qt), tig (อินเทอร์เฟซโหมดข้อความเพื่อ git โดยใช้ ncurses), Giggle (ใน GTK +), TortoiseGit และ git-cheetah การ จำกัด เส้นทางการสนับสนุน (เช่นgitk path/to/file)


@ RobertVukovićฉันรู้ว่านี่เป็นคำถามเก่า ... แต่ดูคำตอบของฉันด้านล่าง!
brianc

4

แน่นอนถ้าคุณต้องการสิ่งที่ใกล้เคียงกับ TortoiseSVN เป็นไปได้คุณสามารถเพียงแค่ใช้TortoiseGit


ยกเว้นว่าส่วนขยายของเชลล์ TortoiseSvn มีคำสั่งสำหรับแสดงประวัติของไฟล์เดียวในขณะที่ TortoiseGit ไม่มี
Neutrino



โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.