git checkout master # first get back to master
git checkout experiment -- app.js # then copy the version of app.js
# from branch "experiment"
ดูวิธีการเลิกทำการเปลี่ยนแปลงไฟล์เดียวหรือไม่
อัปเดตสิงหาคม 2562 Git 2.23
ด้วยใหม่git switch
และgit restore
คำสั่งที่จะ:
git switch master
git restore -s experiment -- app.js
โดยค่าเริ่มต้นต้นไม้การทำงานเท่านั้นที่จะถูกกู้คืน
ถ้าคุณต้องการอัพเดตดัชนีเช่นกัน (หมายถึงกู้คืนเนื้อหาไฟล์และเพิ่มลงในดัชนีในคำสั่งเดียว):
git restore -s experiment --staged --worktree -- app.js
# shorter:
git restore -s experiment -WS -- app.js
ในฐานะที่เป็นJakub Narębskiกล่าวถึงในความคิดเห็น:
git show experiment:path/to/app.js > path/to/app.js
ทำงานเช่นกันยกเว้นว่าตามรายละเอียดในคำถาม SO " วิธีการดึงไฟล์เดียวจากการแก้ไขเฉพาะใน Git? " คุณจะต้องใช้เส้นทางแบบเต็มจากไดเรกทอรีรากของ repo
ดังนั้น path / to / app.js ที่ Jakub ใช้ในตัวอย่างของเขา
ในฐานะที่เป็นFrostyกล่าวถึงในความคิดเห็น:
คุณจะได้รับสถานะล่าสุดของ app.js เท่านั้น
แต่สำหรับgit checkout
หรือgit show
คุณสามารถอ้างอิงการแก้ไขใด ๆ ที่คุณต้องการตามที่แสดงในคำถาม SO " การแก้ไขการชำระเงิน git ของไฟล์ใน git gui ":
$ git show $REVISION:$FILENAME
$ git checkout $REVISION -- $FILENAME
จะเหมือนกันคือ $ FILENAME เป็นเส้นทางแบบเต็มของไฟล์ที่มีเวอร์ชัน
$REVISION
สามารถดังแสดงในgit rev-parse
:
experiment@{yesterday}:app.js # app.js as it was yesterday
experiment^:app.js # app.js on the first commit parent
experiment@{2}:app.js # app.js two commits ago
และอื่น ๆ
schmijosเพิ่มในความคิดเห็น :
คุณสามารถทำได้จากที่เก็บของ:
git checkout stash -- app.js
สิ่งนี้มีประโยชน์มากหากคุณกำลังทำงานในสองสาขาและไม่ต้องการกระทำ