หากคุณยังไม่ได้ยืนยันการเปลี่ยนแปลง
หากการเปลี่ยนแปลงของคุณเข้ากันได้กับสาขาอื่น
นี่เป็นกรณีจากคำถามเนื่องจาก OP ต้องการส่งไปยังสาขาใหม่และใช้หากการเปลี่ยนแปลงของคุณเข้ากันได้กับสาขาเป้าหมายโดยไม่ทริกเกอร์การเขียนทับ
เช่นเดียวกับคำตอบที่ยอมรับโดย John Brodie คุณสามารถชำระเงินที่สาขาใหม่และส่งงาน:
git checkout -b branch_name
git add <files>
git commit -m "message"
หากการเปลี่ยนแปลงของคุณไม่สอดคล้องกับสาขาอื่น
หากคุณได้รับข้อผิดพลาด:
error: Your local changes to the following files would be overwritten by checkout:
...
Please commit your changes or stash them before you switch branches
จากนั้นคุณสามารถซ่อนงานของคุณสร้างสาขาใหม่จากนั้นแสดงการเปลี่ยนแปลงที่เก็บของคุณและแก้ไขข้อขัดแย้ง:
git stash
git checkout -b branch_name
git stash pop
มันจะเป็นถ้าคุณได้ทำการเปลี่ยนแปลงเหล่านั้นหลังจากสร้างสาขาใหม่ จากนั้นคุณสามารถกระทำได้ตามปกติ:
git add <files>
git commit -m "message"
หากคุณมีการเปลี่ยนแปลง
หากคุณต้องการเก็บความมุ่งมั่นในสาขาเดิม
ดูคำตอบของ Carl Norum ด้วยการเก็บผลเชอร์รี่ซึ่งเป็นเครื่องมือที่เหมาะสมในกรณีนี้:
git checkout <target name>
git cherry-pick <original branch>
หากคุณไม่ต้องการที่จะรักษาความมุ่งมั่นในสาขาเดิม
ดูคำตอบโดย joeytwiddle กับความเป็นไปได้ที่ซ้ำกันนี้ ทำตามขั้นตอนข้างต้นตามความเหมาะสมจากนั้นย้อนกลับสาขาเดิม:
git branch -f <original branch> <earlier commit id>
หากคุณผลักดันการเปลี่ยนแปลงของคุณเป็นรีโมตที่แชร์เช่น GitHub คุณไม่ควรลองย้อนกลับนี้จนกว่าคุณจะรู้ว่าคุณกำลังทำอะไรอยู่