Git ซ่อนสองครั้ง


96

ฉันต้องสลับสาขา git อย่างรวดเร็วฉันจึงวิ่งgit stashแต่ต้องเรียกใช้อีกครั้งเพราะไฟล์หนึ่งของฉันต้องการการแก้ไข

ดังนั้นฉันจึงเรียกใช้git stashสองครั้งและฉันก็พร้อมที่จะกลับไปแก้ไขไฟล์ของฉัน ฉันวิ่งgit stash applyแต่ฉันไม่มั่นใจว่าไฟล์ทั้งหมดที่ฉันซ่อนไว้นั้นไม่ได้ซ่อน มีอะไรที่ฉันพอจะทำได้บ้าง? วิธีใดในการตรวจสอบ?

เมื่อฉันวิ่งgit stash showฉันเพิ่งเห็นส่วนที่เหลือของคอมไพล์สองอันสุดท้ายของฉัน

มีการแสดงทั้งหมดgit stashesหรือไม่


4
git stash list. หากคุณทำสองที่ซ่อนให้โทรgit stash popสองครั้ง
Felix Kling

สวัสดีคุณแก้ไขแล้ว! คุณควรใส่เป็นคำตอบ ขอบคุณมาก
stephenmurdoch

คำตอบ:


175

คุณจะได้รับรายชื่อของที่ซ่อนทั้งหมดด้วย

git stash list

ซึ่งจะแสดงสิ่งที่คุณต้องการ

stash@{0}: WIP on dev: 1f6f8bb Commit message A
stash@{1}: WIP on master: 50cf63b Commit message B

หากคุณทำสองที่ซ่อนให้โทรหาgit stash popสองครั้ง เมื่อเทียบกับgit stash apply, popใช้และเอาสะสมล่าสุด

คุณยังสามารถอ้างอิงที่ซ่อนที่เฉพาะเจาะจงได้เช่น

git stash show stash@{1}

หรือ

git stash apply stash@{1}

ขอบคุณมาก. บันทึกวันของฉัน
stephenmurdoch

25
หากคุณต้องการgit stash popสองครั้งเนื่องจากคุณต้องการให้ทั้งสองที่เก็บอยู่ในคอมมิตเดียวกัน แต่คุณพบ "ข้อผิดพลาด: การเปลี่ยนแปลงในระบบของคุณในไฟล์ต่อไปนี้จะถูกเขียนทับโดยการผสาน:" ในวันที่ 2 ของgit stash popคุณคุณสามารถ: 1) git stash pop2) git add .และ 3 ) git stash pop.
gabe

สิ่งนี้ช่วยฉันได้ ฉันต้องทำ "git stash" แล้ว "git stash --all" เพื่อซ่อนไฟล์ใหม่ที่ไม่ได้ติดตาม การทำ git stash pop สองครั้งไม่ได้ผล ฉันได้แค่ที่ซ่อนในภายหลัง
Leopold Kristjansson

0

ฉันเจอสถานการณ์นี้ฉันทำสอง stashes และ git stash pop เพิ่งไม่ได้ซ่อนที่ซ่อนล่าสุด ดังนั้นฉันจึงทำ

git stash list

git stash pop stash@{1}

สิ่งนี้ทำให้ที่เก็บครั้งแรกของฉันหลุดออกไปและฉันสามารถเห็นการเปลี่ยนแปลงทั้งหมดของฉันกลับคืนมา!


0

คุณถามคำถามที่แตกต่างกันสองสามคำถามในโพสต์และผู้ตอบคนอื่น ๆ ก็ให้คำตอบที่ดีกับบางคำถาม สิ่งที่ดูเหมือนสำคัญที่สุด แต่ยังไม่ได้รับคำตอบคือ:

>> ฉันไม่มั่นใจว่าไฟล์ทั้งหมดที่ฉันซ่อนไว้นั้นไม่ได้ซ่อน มีอะไรที่ฉันพอจะทำได้บ้าง? วิธีใดในการตรวจสอบ?

เปรียบเทียบที่ซ่อนกับต้นไม้ในท้องถิ่น

ผมคิดว่าสิ่งที่คุณต้องการจะทำคือการเปรียบเทียบที่ซ่อนเพื่อท้องถิ่นของคุณต้นไม้การทำงาน คุณสามารถวางสวิตช์ -p บนคำสั่ง stash และคุณก็ทำได้ดี:

git stash show -p

หากมีสิ่งที่คุณต้องการเพียงแค่ใช้ชื่อที่เก็บคอมไพล์หรือรหัสจากรายการที่เก็บ:

git stash show -p stash@{3}

อาจจะใช้ diff?

หากคุณสนใจที่จะผลักดันทักษะคอมไพล์ของคุณจริงๆคุณสามารถเลือกใช้ความแตกต่างได้ตลอดเวลา หากต้องการดูความแตกต่างระหว่างสิ่งที่อยู่ในที่เก็บและสิ่งที่ตรวจสอบใน HEAD ในสาขาหลักสามารถใช้ความแตกต่างต่อไปนี้:

git diff stash@ master

คำสั่งที่เป็นระเบียบอีกคำสั่งเพื่อแสดงให้คุณเห็นการเปลี่ยนแปลงสำหรับองค์ประกอบในประวัติที่เก็บที่อาจมีประโยชน์คือ --stat:

git stash list --stat

แต่ฉันคิดว่าคำตอบง่ายๆคือคำตอบที่ถูกต้อง เพียงใช้สวิตช์ -p แล้วคุณจะเห็นว่าที่เก็บของที่คุณเก็บไว้นั้นถูกดึงกลับมาหรือไม่

 git stash show -p stash@{3}
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.