มีหลายวิธีขึ้นอยู่กับว่าคุณอยู่ไกลแค่ไหนและสาขาไหนที่คุณต้องการ
ลองผิดพลาดคลาสสิค:
$ git checkout master
... pause for coffee, etc ...
... return, edit a bunch of stuff, then: oops, wanted to be on develop
ดังนั้นตอนนี้คุณต้องการการเปลี่ยนแปลงเหล่านี้ซึ่งคุณยังไม่ได้มุ่งมั่นที่ยังไม่ได้ที่จะอยู่กับmaster
develop
หากคุณไม่ได้มีdevelop
ๆ วิธีการที่ไม่เป็นสาระ:
$ git checkout -b develop
สิ่งนี้จะสร้างdevelop
สาขาใหม่เริ่มต้นจากทุกที่ที่คุณอยู่ในขณะนี้ ตอนนี้คุณสามารถกระทำและสิ่งใหม่ ๆ develop
อยู่บนทั้งหมด
คุณจะมี develop
ดูว่า Git จะให้คุณสลับโดยไม่ทำอะไรเลยหรือไม่:
$ git checkout develop
สิ่งนี้จะประสบความสำเร็จหรือบ่น ถ้าสำเร็จก็เยี่ยมมาก! เพียงแค่กระทำ หากไม่ใช่ ( error: Your local changes to the following files would be overwritten ...
) คุณยังมีตัวเลือกมากมาย
อาจเป็นวิธีที่ง่ายที่สุดgit stash
(เช่นเดียวกับคำตอบอื่น ๆ ทั้งหมดที่เอาชนะฉันได้เมื่อคลิกpost) เรียกใช้git stash save
หรือgit stash push
, 1หรือเพียงแค่ธรรมดาgit stash
ซึ่งเป็นสั้นสำหรับsave
/ push
:
$ git stash
สิ่งนี้คอมมิทโค้ดของคุณ (ใช่มันทำให้คอมมิทบางส่วน) โดยใช้วิธีที่ไม่ใช่สาขา -y การคอมมิชชันที่ทำให้ไม่ใช่ "เปิด" สาขาใด ๆ แต่ตอนนี้ถูกเก็บไว้อย่างปลอดภัยในที่เก็บดังนั้นตอนนี้คุณสามารถสลับสาขาแล้ว "นำไปใช้" ที่เก็บ:
$ git checkout develop
Switched to branch 'develop'
$ git stash apply
หากทุกอย่างเป็นไปด้วยดีและคุณชอบผลลัพธ์คุณก็ควรจะgit stash drop
ซ่อนมันไว้ สิ่งนี้จะลบการอ้างอิงไปยังคอมมิทที่ไม่ใช่สาขา -y (พวกเขายังอยู่ในพื้นที่เก็บข้อมูลและบางครั้งสามารถเรียกคืนได้ในกรณีฉุกเฉิน แต่สำหรับจุดประสงค์ส่วนใหญ่คุณควรพิจารณาว่าพวกเขาไปที่จุดนั้น)
apply
ขั้นตอนที่จะผสานการเปลี่ยนแปลง stashed ที่ใช้ Git ที่มีประสิทธิภาพของเครื่องจักรผสานต้นแบบชนิดเดียวกันของสิ่งที่จะใช้เมื่อคุณทำผสานสาขา ซึ่งหมายความว่าคุณจะได้รับ "การรวมความขัดแย้ง" หากสาขาที่คุณทำงานโดยไม่ได้ตั้งใจแตกต่างจากสาขาที่คุณตั้งใจจะทำงาน ดังนั้นจึงเป็นความคิดที่ดีที่จะตรวจสอบผลลัพธ์อย่างรอบคอบก่อนที่คุณจะคิดว่าที่เก็บข้อมูลนั้นใช้อย่างหมดจดแม้ว่า Git เองจะไม่ตรวจพบข้อขัดแย้งในการผสาน
หลายคนใช้ซึ่งเป็นสั้นมือgit stash pop
git stash apply && git stash drop
ไม่เป็นไร แต่ก็หมายความว่าหากแอปพลิเคชันส่งผลให้เกิดความยุ่งเหยิงและคุณตัดสินใจว่าคุณไม่ต้องการดำเนินการตามเส้นทางนี้คุณจะไม่สามารถซ่อนตัวได้อย่างง่ายดาย นั่นเป็นเหตุผลที่ฉันแนะนำแยกต่างหากapply
ตรวจสอบผลลัพธ์drop
เฉพาะเมื่อ / เมื่อพอใจ (แน่นอนว่าเป็นการแนะนำจุดอื่นที่คุณสามารถใช้เวลาพักดื่มกาแฟอีกครั้งและลืมสิ่งที่คุณกำลังทำกลับมาทำในสิ่งที่ผิดดังนั้นมันจึงไม่ใช่วิธีการรักษาที่สมบูรณ์แบบ)
1 The save
in git stash save
คือกริยาเก่าสำหรับสร้าง stash ใหม่ Git เวอร์ชั่น 2.13 แนะนำคำกริยาใหม่เพื่อให้สิ่งต่าง ๆ สอดคล้องpop
และเพื่อเพิ่มตัวเลือกเพิ่มเติมในคำสั่งการสร้าง Git เวอร์ชั่น 2.16 เลิกใช้กริยาเก่าอย่างเป็นทางการ (แม้ว่ามันจะยังคงใช้งานได้ใน Git 2.23 ซึ่งเป็นรุ่นล่าสุดในขณะที่ฉันกำลังแก้ไข)
git stash
git-scm.com/book/en/Git-Tools-Stashing