IntelliJ รองรับ git stashes เช่นเดียวกับคำสั่งที่สร้างขึ้นเองใน Shelve สิ่งเหล่านี้ดูเหมือนเกือบจะเหมือนกันในด้านวัตถุประสงค์และประโยชน์ใช้สอย อะไรคือความแตกต่างระหว่างพวกเขา?
IntelliJ รองรับ git stashes เช่นเดียวกับคำสั่งที่สร้างขึ้นเองใน Shelve สิ่งเหล่านี้ดูเหมือนเกือบจะเหมือนกันในด้านวัตถุประสงค์และประโยชน์ใช้สอย อะไรคือความแตกต่างระหว่างพวกเขา?
คำตอบ:
จากเอกสาร IntelliJ :
ในการผสานรวม Git นอกเหนือจากการเก็บเข้าลิ้นชักและการไม่มีชั้นวางแล้วยังรองรับ "การเก็บ" และ "การไม่เก็บ" ตามลำดับ คุณสมบัติเหล่านี้มีเหมือนกันมากความแตกต่างเพียงอย่างเดียวคือวิธีการสร้างและใช้แพตช์
- โปรแกรมแก้ไขที่มีการเปลี่ยนแปลงที่ซ่อนไว้นั้นสร้างขึ้นโดย Git เอง หากต้องการนำไปใช้ในภายหลังคุณไม่จำเป็นต้องใช้ IntelliJ IDEA
- โปรแกรมแก้ไขที่มีการเปลี่ยนแปลงในชั้นวางถูกสร้างขึ้นโดย IntelliJ IDEA โดยปกติจะใช้ผ่าน IDE ด้วย นอกจากนี้ยังสามารถใช้การเปลี่ยนแปลงที่มีชั้นวางภายนอก IntelliJ IDEA ได้ แต่ต้องมีขั้นตอนเพิ่มเติม
git stash push
.
มันค่อนข้างคล้ายกันยกเว้น:
นอกจากนี้ IMHO ชั้นวางยังทำงานได้เร็วขึ้นเล็กน้อยโดยเฉพาะอย่างยิ่งในโครงการขนาดใหญ่เมื่อมีการเปลี่ยนแปลงไฟล์จำนวนมาก
ดูเอกสารสำหรับข้อมูลเพิ่มเติม
git stash -- foo/bar.txt
ข้อได้เปรียบที่แตกต่างอย่างหนึ่งที่ Intellij's Shelve มีมากกว่าที่ซ่อนของ Git คือการใช้ Shelve คุณสามารถบันทึกการเปลี่ยนแปลงที่เป็นของหลาย repos ในรายการการเปลี่ยนแปลงเดียว การใช้ที่เก็บคุณจะต้องซ่อน / ยกเลิกการเก็บในแต่ละ repo ทีละรายการ สิ่งนี้มีประโยชน์มากในโปรเจ็กต์ขนาดใหญ่ที่มีหลายโมดูล (แต่ละโมดูลมี repo ของตัวเอง) ซึ่งการทำงานของฟีเจอร์บางอย่างอาจตัดผ่านหลายโมดูล (ดังนั้นจึงมีหลาย repos)
นี่คือสิ่งที่เอกสารกล่าวว่า
การเปลี่ยนแปลงที่ซ่อนคล้ายกับการเก็บเข้าลิ้นชัก ความแตกต่างเพียงอย่างเดียวคือวิธีการสร้างและใช้แพตช์ Git สร้าง Stashes และสามารถใช้ได้จากภายใน IntelliJ IDEA หรือภายนอก แพตช์ที่มีการเปลี่ยนแปลงแบบปิดถูกสร้างขึ้นโดย IntelliJ IDEA และยังถูกนำไปใช้ผ่าน IDE นอกจากนี้การซ่อนยังเกี่ยวข้องกับการเปลี่ยนแปลงที่ไม่มีข้อผูกมัดทั้งหมดในขณะที่คุณใส่การเปลี่ยนแปลงในชั้นวางคุณสามารถเลือกการเปลี่ยนแปลงบางอย่างในเครื่องแทนที่จะเก็บไว้ในชั้นวางทั้งหมด