น่าเศร้าที่สิ่งนี้เกิดขึ้นกับฉันค่อนข้างสม่ำเสมอเช่นกันและฉันใช้git stash
ถ้าฉันตระหนักถึงความผิดพลาดของฉันก่อนหน้านี้git commit
และใช้เป็นgit cherry-pick
อย่างอื่นทั้งสองคำสั่งจะอธิบายได้ดีในคำตอบอื่น ๆ
ฉันต้องการเพิ่มความกระจ่างสำหรับgit checkout targetBranch
: คำสั่งนี้จะเก็บรักษาไดเรกทอรีการทำงานของคุณและสแน็ปช็อตที่จัดฉากหาก targetBranch มีประวัติเดียวกับสาขาปัจจุบันของคุณ
หากคุณไม่ได้มุ่งมั่นแล้วการเปลี่ยนแปลงของคุณเพียงแค่ใช้เช็คเอาต์คอมไพล์จะย้ายไปสาขาใหม่และจากนั้นพวกเขากระทำตามปกติ
@ คำสั่งของแอมเบอร์ไม่ได้เป็นเท็จเมื่อคุณย้ายไปยังnewBranch , git checkout -b newBranch
ตัวชี้ใหม่ถูกสร้างขึ้นและมันจะชี้ไปที่เดียวกันแน่นอนกระทำเป็นสาขาในปัจจุบันของคุณ
ในความเป็นจริงหากคุณมีสาขาอื่นที่แบ่งปันประวัติกับสาขาปัจจุบันของคุณ (ทั้งสองจุดที่กระทำเดียวกัน) คุณสามารถ "ย้ายการเปลี่ยนแปลง" โดยgit checkout targetBranch
อย่างไรก็ตามโดยทั่วไปแล้วสาขาที่แตกต่างหมายถึงประวัติที่แตกต่างกันและ Git จะไม่อนุญาตให้คุณสลับระหว่างสาขาเหล่านี้ด้วยไดเรกทอรีทำงานที่สกปรกหรือพื้นที่จัดเตรียม ในกรณีที่คุณสามารถทำได้git checkout -f targetBranch
(การเปลี่ยนแปลงที่สะอาดและไม่ถูกโยนทิ้ง) หรือgit stage
+ git checkout targetBranch
(ทำความสะอาดและบันทึกการเปลี่ยนแปลง) เพียงแค่เรียกใช้git checkout targetBranch
จะทำให้เกิดข้อผิดพลาด:
ข้อผิดพลาด: การเปลี่ยนแปลงในท้องถิ่นของคุณสำหรับไฟล์ต่อไปนี้จะถูกเขียนทับโดยเช็คเอาต์: ... โปรดยืนยันการเปลี่ยนแปลงของคุณหรือซ่อนไว้ก่อนที่คุณจะเปลี่ยนสาขา ยกเลิก