git stash และ git pull


92

ฉันยังใหม่กับ Git และฉันใช้ปลั๊กอิน EGit eclipse เพื่อคอมมิต

ฉันแก้ไขไฟล์ไม่กี่ไฟล์และฉันซ่อนการเปลี่ยนแปลงไว้จากนั้นฉันก็ทำgit pullในบรรทัดคำสั่งซึ่งดึงการกระทำล่าสุดทั้งหมด จากนั้นฉันก็ทำApply stashed changesจาก EGit ตอนนี้ใช้การเปลี่ยนแปลงของฉันและการเปลี่ยนแปลงที่ดึงมาจากการกระทำสุดท้ายของไฟล์ที่เก็บไว้ก็ออกไป ฉันไม่แน่ใจว่าเหตุใดจึงไม่ถามฉันเกี่ยวกับการรวมข้อขัดแย้งและเขียนทับการเปลี่ยนแปลงของฉันและทำให้การเปลี่ยนแปลงก่อนหน้านี้หายไป

จะรับการเปลี่ยนแปลงเหล่านั้นได้อย่างไร?


ฟังดูไม่น่าเชื่อถือ การเก็บซ่อนจะนำมาซึ่งการเปลี่ยนแปลงที่ไม่ขัดแย้งกันหรือทำให้เกิดความขัดแย้งในการผสาน ฉันคิดว่าคุณลืมพูดถึงอะไรบางอย่าง นอกจากนี้คุณสามารถทำซ้ำขั้นตอนของคุณได้ซึ่งส่วนใหญ่แล้วที่เก็บของคุณยังอยู่ในรายการใช้git stash listเพื่อแสดง
kan

คำตอบ:


215

เมื่อคุณมีการเปลี่ยนแปลงในสำเนาการทำงานของคุณจากบรรทัดคำสั่งทำ:

git stash 

สิ่งนี้จะซ่อนการเปลี่ยนแปลงของคุณและล้างรายงานสถานะของคุณ

git pull

สิ่งนี้จะดึงการเปลี่ยนแปลงจากสาขาต้นน้ำ ตรวจสอบให้แน่ใจว่ามีข้อความกรอไปข้างหน้าในรายงาน หากไม่เป็นเช่นนั้นคุณอาจทำการผสานโดยไม่ได้ตั้งใจ

git stash pop

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

หากคุณต้องการดูว่ามีอะไรอยู่ในที่ซ่อนของคุณ

git stash list

@java_newbie ถ้าคุณต้องการทำสิ่งนี้ด้วยการซ่อนและดึงไม่มีไม่มีทาง แต่คุณสามารถบรรลุผลลัพธ์เดียวกันได้ด้วย rebase คำสั่ง 'git rebase origin / <upstream branch name>' ควรทำสิ่งเดียวกัน
yilmazhuseyin

5
ฉันคิดว่าสิ่งนี้จะทำได้:git stash && git pull && git stash pop
Fabrice Kabongo

@yilmazhuseyin 'ผลลัพธ์เดียวกัน' หมายความว่าอย่างไรคุณสามารถให้เกร็ดเล็กเกร็ดน้อยได้หรือไม่? คุณหมายถึงgit rebase origin/masterจะให้ผลลัพธ์เช่นเดียวกับgit stash; git pull; git stash pop?
nehem

9
ถ้าใช้ Git v2.9.0 git pull --rebase --autostashหรือรุ่นที่ใหม่กว่าลอง FYI
momocow

1
ได้--autostashผลเสมอ? ตัวอย่างเช่นหากฉันมีไฟล์ที่ไม่ได้ติดตามซึ่งบางส่วนอยู่ใน Git แล้ว?
qräbnö
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.