ฉันทำงานเกี่ยวกับโครงการ แต่โชคไม่ดีที่ฉันลืมเปลี่ยนไปใช้สาขาของฉัน
ฉันจะคัดลอกงาน (3 ไฟล์) ที่ฉันทำที่นี่จากต้นแบบไปยังสาขาของฉัน (เรียกว่าเช่นbranch123 ) โดยไม่ต้องcomittingไปยัง master ได้อย่างไร
ฉันทำงานเกี่ยวกับโครงการ แต่โชคไม่ดีที่ฉันลืมเปลี่ยนไปใช้สาขาของฉัน
ฉันจะคัดลอกงาน (3 ไฟล์) ที่ฉันทำที่นี่จากต้นแบบไปยังสาขาของฉัน (เรียกว่าเช่นbranch123 ) โดยไม่ต้องcomittingไปยัง master ได้อย่างไร
คำตอบ:
เสียงเหมือนที่คุณต้องการคือ:
git stash
git checkout branch123
git stash apply
จากนั้นคุณควรกลับมาที่สาขาของคุณเองโดยไม่ต้องสัมผัสกับสาขาหลัก
stashบันทึกการแก้ไขในพื้นที่จากนั้นstash applyนำกลับมาใช้ใหม่
git reset --hard HEADและคุณจะกลับไปสู่การผูกพันสุดท้ายที่คุณทำกับสาขาหลัก
คำตอบที่ได้รับการยอมรับนั้นละเอียดที่สุด แต่มีกรณีพิเศษที่คุณสามารถทำให้ง่ายขึ้นได้ หากไฟล์ที่คุณแก้ไขในไดเร็กทอรีการทำงานเหมือนกันทั้งคู่masterและbranch123คุณสามารถทำได้
git checkout branch123
ไม่จำเป็นต้องซ่อนอะไรเนื่องจากพฤติกรรมเริ่มต้นของcheckoutคือไม่เขียนทับไฟล์ที่ถูกแก้ไขในไดเรกทอรีทำงานของคุณดังนั้นคุณจะไม่สูญเสียอะไรเลย (สิ่งนี้ถูกกล่าวถึงในความคิดเห็นก่อนโดย Cascabel)
ตามที่คนอื่น ๆ พูดถึงในความคิดเห็นหากbranch123ยังไม่มีคุณสามารถทำได้
git checkout -b branch123
git checkout -b newbranch
master branch123ดูคำตอบที่แก้ไขของฉัน
git stash คือสิ่งที่คุณต้องการ
คำอธิบายแบบเต็มสามารถพบได้ในGit-Tools-Stashing
เนื่องจากเป็นไปได้ที่จะสร้างสาขาใหม่ แต่ไม่สามารถชำระเงินสาขาที่มีอยู่ขณะที่เช็คเอาต์ไฟล์ฉันจึงพบเคล็ดลับต่อไปนี้โดยใช้สาขาชั่วคราวเพื่อทำงาน:
สถานการณ์นี้ทำงานอย่างน้อยกับปลั๊กอิน VS 2015 Git แต่ส่วนใหญ่จะทำงานกับเครื่องมือ git ใด ๆ
แก้ไข: ฉันพบว่าคุณจะต้องทำการ rebase (git rebase --onto) ของสาขา temp ก่อนที่จะทำการผสาน มิฉะนั้นการเปลี่ยนแปลงในต้นแบบจะรวมอยู่ในการผสาน ขั้นตอนพิเศษ 3.5 ข้างต้น ดูเพิ่มเติมเกี่ยวกับการรีบูตที่นี่: https://git-scm.com/book/en/v2/Git-Branching-Rebasing