ดูไฟล์ในสาขา Git อื่นโดยไม่ต้องเปลี่ยนสาขา


620

เป็นไปได้ไหมที่จะเปิดไฟล์ในสาขา git โดยไม่ต้องตรวจสอบจากสาขานั้น? อย่างไร?

เป็นหลักฉันต้องการที่จะสามารถเปิดไฟล์ในสาขาหน้า githubของฉันโดยไม่ต้องเปลี่ยนสาขาตลอดเวลา ฉันไม่ต้องการแก้ไข แต่ต้องการดู


15
คำตอบทั้งหมดพลาดความจริงที่คุณต้องระบุพา ธ เต็มของไฟล์ด้วยgit show: stackoverflow.com/questions/610208/ …และstackoverflow.com/questions/2364147/ …
VonC

15
วันนี้คุณสามารถใช้git show a1b35:./file.txtเพื่อใช้เส้นทางสัมพัทธ์
Steve Bennett

2
@VonC - ขอบคุณพระเจ้าสำหรับการเสร็จสมบูรณ์ของแท็บที่สาขาทราบ :)
ลุ

น่าสนใจมากขึ้นอาจแสดงความแตกต่างgit diff <other_branch> <path>
Sławomir Lenart

ตัวอย่างไฟล์สัมพัทธ์ข้างต้นด้วย "a1b35" นั่นคือชื่อสาขาดังนั้นแน่นอนว่าใส่ชื่อสาขาของคุณเองที่นั่น
loneRanger

คำตอบ:


876

สิ่งนี้น่าจะใช้ได้:

git show branch:file

ที่branchสามารถอ้างอิงใด ๆ (branch, tag, HEAD, ... ) และfileเป็นเส้นทางแบบเต็มของไฟล์ หากต้องการส่งออกคุณสามารถใช้

git show branch:file > exported_file

คุณควรดูคำตอบของVonCสำหรับคำถามที่เกี่ยวข้อง:

อัพเดท 2015-01-19:

git show a1b35:./file.txtปัจจุบันคุณสามารถใช้เส้นทางญาติกับ


22
และคุณสามารถเปิดไฟล์ใน vim ได้เช่นกัน: git show branch:file | vim -(สังเกตไปที่ "|" ไปป์และเส้นประต่อท้ายหลังจากคำสั่ง vim:vim -
Greg Burghardt

3
@GregBurghardt สิ่งที่เหมาะกับฉันคือสิ่งที่คล้ายกับvim -c "set syntax=html" -
raphaëλ

2
ฉันหวังว่าฉันจะเอาชนะคำตอบนี้ได้มากกว่าหนึ่งครั้งโดยสุจริต
Vincent Fourmond

2
นี่แสดงเฉพาะสาขาในประเทศเท่านั้นไม่แสดงทุกสาขาบนเซิร์ฟเวอร์
William Entriken

3
@ FullDecent ฉันสามารถใช้งานได้origin/my_remote_branchดีกับสิ่งนี้ หรือคุณหมายถึงเวอร์ชันเซิร์ฟเวอร์จริง ถ้าคุณต้องการสิ่งนั้นคุณต้องทำgit fetchก่อน
rsmith54

53
git show somebranch:path/to/your/file

คุณยังสามารถทำหลายไฟล์และแบ่งให้เป็นส่วน ๆ :

git show branchA~10:fileA branchB^^:fileB

คุณไม่จำเป็นต้องระบุเส้นทางแบบเต็มไปยังไฟล์เส้นทางที่สัมพันธ์กันเป็นที่ยอมรับเช่น:

git show branchA~10:../src/hello.c

หากคุณต้องการรับไฟล์ในไดเรกทอรีภายในเครื่อง (คืนหนึ่งไฟล์) คุณสามารถชำระเงินได้:

git checkout somebranch^^^ -- path/to/file

38

วิธีที่ง่ายและเป็นมิตรกับมือใหม่สำหรับการดูไฟล์: git gui browser <branch>ซึ่งช่วยให้คุณสำรวจเนื้อหาของไฟล์ใด ๆ

นอกจากนี้ยังมีในเมนู File git guiของ อื่น ๆ ส่วนใหญ่ - เพิ่มเติมขั้นสูง - GUI wrappers (Qgit, Egit ฯลฯ .. ) เสนอการเรียกดู / เปิดไฟล์เช่นกัน


ผลการค้นหาคำสั่งนี้ "คอมไพล์: 'กุย' ไม่ได้เป็นคำสั่งคอมไพล์ดู 'คอมไพล์ --help' ฉันมือใหม่; สิ่งที่เกิดขึ้น..
สกอตต์บิ๊กส์

2
ใช้งานได้จริง (เพื่อความประหลาดใจของฉัน) ดูgit-scm.com/docs/git-gui - ฉันใช้ git เวอร์ชัน 2.5.2.windows.1
anhoppe

คำตอบนี้มีประโยชน์มาก! ขอบคุณ ควรพูดถึงว่าฉันใช้ทุบตี git บน windows
ควบรวมกิจการ

เป็นไปได้ไหมที่จะใช้แรนเจอร์เป็น git gui?
acgtyrant

1
@ScottBiggs คุณไม่ใช่มือใหม่คุณกำลังใช้การตั้งค่าที่ไม่เป็นมาตรฐาน
Ashnur

20

หากคุณกำลังใช้ Emacs คุณสามารถพิมพ์C-x v ~เพื่อดูการแก้ไขไฟล์ที่คุณกำลังแก้ไขในปัจจุบัน (แท็กกิ่งและแฮชทำงานทั้งหมด)


มีวิธีการรับสิ่งนี้ใน Vim หรือไม่? (ฉันเปิดให้ปลั๊กอิน)
NHDaly

4

เพิ่มสิ่งต่อไปนี้ใน~/.gitconfigไฟล์ของคุณ

[alias]
  cat = "!git show \"$1:$2\" #"

แล้วลองสิ่งนี้

git cat BRANCHNAME FILEPATH

ส่วนตัวฉันชอบพารามิเตอร์ที่แยกกันโดยไม่ต้องโคลอน ทำไม? ตัวเลือกนี้สะท้อนพารามิเตอร์ของcheckoutคำสั่งซึ่งฉันมักจะใช้ค่อนข้างบ่อยและฉันพบว่ามันจำได้ง่ายกว่าพารามิเตอร์ที่คั่นด้วยเครื่องหมายทวิภาคที่แปลกประหลาดของshowคำสั่ง


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