ฉันจะแชร์ git stash ได้อย่างไร


32

มีวิธีแบ่งปันที่ซ่อนในคอมไพล์หรือไม่?

ฉันทำงานกับเครื่องจักรจำนวนมากและมักต้องการย้ายสถานะการทำงานปัจจุบันของฉันจากที่หนึ่งไปยังอีกที่หนึ่ง

ฉันกำลังมองหาวิธีที่ฉันสามารถผลัก / ดึงที่ซ่อนจากที่หนึ่งไปยังอีกที่หนึ่งและมีมันเป็นที่ซ่อนของอีกคนหนึ่งหรือที่อื่นเพื่อโคลนนิ่ง ฉันไม่ได้คาดหวังว่าอดีตจะต้องทำงานถ้ารีโมทมีที่ซ่อนของตัวเองแม้ว่า

เนื่องจากว่ามีผลบังคับใช้แล้วเป็นสาขาที่มีความมุ่งมั่นอยู่ (เห็นได้ชัดว่า) ฉันไม่ได้มองหาวิธีการแก้ปัญหาตามแนวของ "กระทำที่ซ่อนแต่ละสาขาไปยังสาขาแล้วแบ่งปันเหล่านั้น" - ฉันมีจำนวนมากแล้ว หลายสาขา ฉันกำลังมองหาrefspecหรือคล้ายกันที่ฉันสามารถใช้เพื่อควบคุมการผลัก / ดึง

คำตอบ:


26

ที่ซ่อนเป็นเพียงstashหรือrefs/stashซึ่งคุณสามารถผลักดันไปยังสาขาระยะไกล:

git push origin stash@{2}:refs/heads/otherstash

Git จะปฏิเสธที่จะผลักดันโดยตรงไปrefs/stashอย่างไร นอกจากนี้ดูเหมือนว่าจะไม่มีวิธีผลักดันreflogsทั้งหมดที่จัดเก็บ stashes ก่อนหน้า


6
git push origin $(for sha in $(git rev-list -g stash); do echo $sha:refs/heads/stash_$sha; done)ควรทำอย่างดีสำหรับการหยุดทั้งหมด ดูเพิ่มเติมที่stackoverflow.com/a/5248758/85371
2559

11

มันไม่ได้รวมเข้าด้วยกันเหมือนgit pushแต่เพื่อหลีกเลี่ยงการสร้างสาขาฉันใช้git stash show -p > change.patch(หลังจากหยุดการเปลี่ยนแปลง) หรือแม้กระทั่งgit diff --cached > change.patchเพื่อสร้างโปรแกรมปะแก้ที่ฉันใช้git apply change.patchในเครื่องถัดไปที่ฉันทำงาน

ด้วยวิธีนี้อย่างน้อยหากมีการเปลี่ยนแปลงไฟล์จำนวนมากในสถานะการทำงานปัจจุบันของคุณทุกอย่างจะอยู่ในหน่วยข้อมูลเดียว


ใช่ .. แต่อย่างไร git stash -p เพียงถามฉันแบบโต้ตอบเกี่ยวกับก้อนใหญ่ทุกครั้ง - แล้วถ่มน้ำลายสายยาวที่ฉันไม่เข้าใจ ที่ "แพทช์" อยู่ที่ไหนฉันสามารถพาไปกับเครื่องอื่นได้ และอะไรคือคอมไพล์ต่างแคช? และคุณใช้ git อย่างไร กรุณาอธิบายเพิ่มเติมหน่อยได้ไหม
Motti Shneor

ฉันให้รายละเอียดและแก้ไขคำตอบของฉัน
Neo

4

คุณสามารถแก้ไขและส่งไปให้ใครบางคน สิ่งที่คุณต้องทำคือนำไปใช้

git diff >> file.diff

3
หมายเหตุสิ่งนี้จะใช้ได้กับวัตถุที่สร้างความแตกต่างเท่านั้น ระวัง "ไฟล์ไบนารีแตกต่าง" ในผลลัพธ์
เลียม
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.