ฉันจะใช้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ไม่ใช่ "เหมือนกัน แต่มีไฟล์เพิ่มเติมในสาขาปัจจุบันของฉัน"