ฉันจะใช้git restore
(ใช้ได้ตั้งแต่ git 2.23)
git restore --source otherbranch path/to/myfile.txt
ทำไมมันถึงดีกว่าตัวเลือกอื่น ๆ ?
git checkout otherbranch -- path/to/myfile.txt
- มันคัดลอกไฟล์ไปยังไดเรกทอรีการทำงาน แต่ยังรวมถึงพื้นที่การแสดงละคร (ผลที่คล้ายกันเช่นถ้าคุณจะคัดลอกไฟล์นี้ด้วยตนเองและดำเนินการgit add
เกี่ยวกับมัน) git restore
ไม่ได้แตะพื้นที่การแสดงละคร (เว้นแต่จะระบุไว้ตาม--staged
ตัวเลือก)
git show otherbranch:path/to/myfile.txt > path/to/myfile.txt
ใช้การเปลี่ยนเส้นทางเชลล์มาตรฐาน ถ้าคุณใช้ Powershell แล้วอาจจะมีปัญหากับ enconding ข้อความหรือคุณอาจจะได้รับไฟล์เสียถ้ามันไบนารี ด้วยgit restore
การเปลี่ยนไฟล์ทำได้โดยทั้งหมดgit
ปฏิบัติการ
ข้อดีอีกอย่างคือคุณสามารถกู้คืนทั้งโฟลเดอร์ได้ด้วย:
git restore --source otherbranch path/to
หรือด้วยgit restore --overlay --source otherbranch path/to
ถ้าคุณต้องการหลีกเลี่ยงการลบไฟล์ ตัวอย่างเช่นหากมีไฟล์น้อยotherbranch
กว่าในไดเรกทอรีการทำงานปัจจุบัน (และไฟล์เหล่านี้มีการติดตาม ) โดยไม่มี--overlay
ตัวเลือกgit restore
จะลบพวกเขา แต่นี่เป็นค่าเริ่มต้นที่ดี bahaviour คุณน่าจะต้องการให้สถานะของไดเรกทอรีเหมือนกันotherbranch
ไม่ใช่ "เหมือนกัน แต่มีไฟล์เพิ่มเติมในสาขาปัจจุบันของฉัน"