ดังที่ได้กล่าวไว้โดย @bentolo คุณสามารถลบไฟล์ที่บ่นด้วยตนเองสลับสาขาจากนั้นเพิ่มกลับด้วยตนเอง แต่โดยส่วนตัวแล้วฉันชอบที่จะอยู่ "ภายในคอมไพล์"
วิธีที่ดีที่สุดคือการแปลงที่ซ่อนเป็นกิ่งไม้ เมื่อเป็นสาขาแล้วคุณสามารถทำงานในคอมไพล์ได้ตามปกติโดยใช้เทคนิค / เครื่องมือที่เกี่ยวข้องกับสาขาตามปกติที่คุณรู้จักและชื่นชอบ นี่เป็นเทคนิคทั่วไปที่มีประโยชน์ในการทำงานกับที่เก็บข้อมูลแม้ว่าคุณจะไม่มีข้อผิดพลาดในรายการก็ตาม ใช้งานได้ดีเนื่องจากการซ่อนเป็นการกระทำภายใต้ฝาครอบ (ดู PS)
การแปลงที่ซ่อนเป็นสาขา
ต่อไปนี้จะสร้างสาขาโดยยึดตาม HEAD เมื่อสร้างที่เก็บแล้วจากนั้นใช้ที่เก็บ (ไม่ได้คอมมิต)
git stash branch STASHBRANCH
การทำงานกับ "สาขาที่เก็บ"
สิ่งที่คุณจะทำต่อไปขึ้นอยู่กับความสัมพันธ์ระหว่างที่เก็บข้อมูลและตำแหน่งที่สาขาเป้าหมายของคุณ (ซึ่งฉันจะเรียกว่า ORIGINALBRANCH) อยู่ในขณะนี้
ตัวเลือกที่ 1 - Rebase stash branch ตามปกติ (มีการเปลี่ยนแปลงมากมายตั้งแต่ stash)
หากคุณได้ทำการเปลี่ยนแปลงมากมายใน ORIGINALBRANCH ของคุณคุณน่าจะปฏิบัติต่อ STASHBRANCH ได้ดีที่สุดเช่นเดียวกับสาขาในพื้นที่ ยอมรับการเปลี่ยนแปลงของคุณใน STASHBRANCH สร้างฐานข้อมูลใหม่บน ORIGINALBRANCH จากนั้นเปลี่ยนเป็น ORIGINALBRANCH และปรับฐาน / รวมการเปลี่ยนแปลง STASHBRANCH เข้าด้วยกัน หากมีข้อขัดแย้งให้จัดการตามปกติ (ข้อดีอย่างหนึ่งของแนวทางนี้คือคุณสามารถดูและแก้ไขความขัดแย้งได้)
ตัวเลือก 2 - รีเซ็ตสาขาเดิมเพื่อให้ตรงกับที่ซ่อน (การเปลี่ยนแปลงที่ จำกัด ตั้งแต่ที่ซ่อน)
หากคุณเก็บไว้ในขณะที่รักษาการเปลี่ยนแปลงบางอย่างเป็นขั้นตอนให้ทำการตกลงและสิ่งที่คุณต้องการทำคือรับการเปลี่ยนแปลงเพิ่มเติมที่ไม่ได้จัดฉากเมื่อคุณจัดเก็บคุณสามารถทำสิ่งต่อไปนี้ได้ จะเปลี่ยนกลับไปที่สาขาและดัชนีเดิมของคุณโดยไม่ต้องเปลี่ยนสำเนาการทำงานของคุณ ผลลัพธ์สุดท้ายคือการเปลี่ยนแปลงที่ซ่อนเพิ่มเติมในสำเนาการทำงานของคุณ
git symbolic-ref HEAD refs/heads/ORIGINALBRANCH
git reset
พื้นหลัง
Stashes ยอมรับว่าชอบสาขา / แท็ก (ไม่ใช่แพทช์)
ปล. มันเป็นเรื่องที่น่าดึงดูดที่จะคิดว่าการซ่อนเป็นแพทช์ (เช่นเดียวกับการดึงดูดให้คิดว่าการกระทำเป็นแพทช์) แต่ที่จริงแล้วการซ่อนเป็นการกระทำต่อ HEAD เมื่อมันถูกสร้างขึ้น เมื่อคุณสมัคร / ป๊อปคุณกำลังทำบางสิ่งที่คล้ายกับการเก็บเชอร์รี่เข้าสาขาปัจจุบันของคุณ โปรดทราบว่าสาขาและแท็กเป็นเพียงการอ้างอิงถึงการคอมมิตดังนั้นในหลาย ๆ ด้านการจัดเก็บกิ่งก้านและแท็กจึงเป็นเพียงวิธีการที่แตกต่างกันในการชี้ไปที่คอมมิต (และประวัติ)
บางครั้งจำเป็นแม้ว่าคุณจะไม่ได้ทำการเปลี่ยนแปลงไดเร็กทอรีการทำงานก็ตาม
PPS คุณอาจต้องใช้เทคนิคนี้หลังจากใช้การซ่อนด้วย - แพทช์และ / หรือ - รวม - ไม่ถูกติดตาม แม้ว่าจะไม่มีการเปลี่ยนไดเรกทอรีการทำงานตัวเลือกเหล่านี้บางครั้งก็สามารถสร้างที่ซ่อนที่คุณไม่สามารถใช้กลับ ฉันต้องยอมรับว่าไม่เข้าใจว่าทำไม ดูhttp://git.661346.n2.nabble.com/stash-refuses-to-pop-td7453780.htmlสำหรับการสนทนา