อะไรคือความแตกต่างระหว่าง git reset –mixed, –soft และ –hard?

Xari Khux Khwam Taek Tang Rahwang Git Reset Mixed Soft Laea Hard



ใน Git ทุกการคอมมิตจะเชื่อมโยงกับคอมมิทก่อนหน้า และ HEAD จะชี้ไปที่คอมมิชชันล่าสุดในสาขาที่ทำงานอยู่ ประวัติการกระทำจะถูกเก็บไว้เป็นต้นไม้ของการกระทำ อย่างไรก็ตาม บางครั้งนักพัฒนาจำเป็นต้องแก้ไขประวัติการคอมมิต เพื่อจุดประสงค์นี้ ' $ คอมไพล์รีเซ็ต คำสั่ง ” ใช้เพื่อแก้ไขประวัติของที่เก็บ Git และแก้ไขข้อผิดพลาดที่เกิดขึ้น

บทความนี้จะอธิบายโดยย่อถึงความแตกต่างระหว่าง git reset –hard, –soft และ –mixed

อะไรคือความแตกต่างระหว่าง git reset –mixed, –soft และ –hard?

Git มีตัวเลือกการรีเซ็ตหลายตัว ขึ้นอยู่กับวิธีจัดการกับคอมมิท ตัวเลือกที่มีอยู่ทั้งหมดจะแตกต่างกัน พวกเขาทั้งหมดแก้ไขประวัติ Git และย้าย HEAD กลับ นอกจากนี้ยังจัดการกับการเปลี่ยนแปลงที่แตกต่างกัน เช่น:







  • -อ่อน ” ตัวเลือกที่ใช้กับ “ $ คอมไพล์รีเซ็ต ” คำสั่งเพื่อเก็บไฟล์และส่งคืนการเปลี่ยนแปลงการคอมมิตไปยังดัชนีการจัดเตรียม Git
  • $ git รีเซ็ต – ผสม ” ใช้เพื่อเลิกทำการเปลี่ยนแปลงที่คอมมิตและลบไฟล์ออกจากดัชนีการแสดงละครโดยไม่ลบออกจากไดเร็กทอรีการทำงาน
  • -แข็ง ” ตัวเลือกด้วย “ $ คอมไพล์รีเซ็ต คำสั่ง ” ใช้เพื่อลบการเปลี่ยนแปลงทั้งหมดและลบออกจากไดเร็กทอรีการทำงานในเครื่อง

ลองมาดูตัวอย่างดูว่า “ $ คอมไพล์รีเซ็ต ” คำสั่งใช้งานได้กับตัวเลือกต่าง ๆ !



ขั้นตอนที่ 1: ไปที่ที่เก็บ Git ที่ต้องการ

ขั้นแรก ย้ายไปยังที่เก็บ Git ที่คุณต้องการโดยใช้ ' ซีดี ' สั่งการ:



$ ซีดี 'ค:\ไป \t is_repo'





ขั้นตอนที่ 2: สร้างไฟล์

ตอนนี้ดำเนินการคำสั่งด้านล่างเพื่อสร้างไฟล์:

$ สัมผัส ไฟล์ 4.txt



ขั้นตอนที่ 3: เพิ่มไฟล์ไปยัง Staging Index

ใช้ ' คอมไพล์เพิ่ม ” คำสั่งเพื่อเพิ่มไฟล์ที่สร้างขึ้นใหม่ลงในดัชนีการจัดเตรียม:

$ คอมไพล์เพิ่ม ไฟล์ 4.txt

ขั้นตอนที่ 4: ยอมรับการเปลี่ยนแปลง

ถัดไป เพิ่มการเปลี่ยนแปลงทั้งหมดลงในที่เก็บการทำงานโดยดำเนินการ “ คอมไพล์คอมไพล์ ' สั่งการ:

$ คอมไพล์คอมไพล์ -ม 'เพิ่ม File4'

ขั้นตอนที่ 5: ตรวจสอบบันทึก Git

จากนั้นตรวจสอบประวัติบันทึก Git เพื่อดูการคอมมิตล่าสุดที่เพิ่มเข้ามา:

$ บันทึกคอมไพล์

ในเอาต์พุตด้านล่าง จะเห็นได้ว่าคอมมิชชันที่เพิ่มล่าสุดทั้งหมดจะแสดงขึ้น และ ' ศีรษะ ” กำลังชี้ไปที่การกระทำล่าสุด:

บันทึก: หากต้องการตรวจสอบตำแหน่งการชี้ปัจจุบันของ HEAD ในทางที่ดีขึ้น ให้ดำเนินการ “ บันทึกคอมไพล์ ” คำสั่งพร้อมกับ “ –ออนไลน์ ' ธง:

$ บันทึกคอมไพล์ --ออนไลน์

ผลลัพธ์ที่ระบุด้านล่างแสดงรายการของคอมมิต SHA แฮชพร้อมข้อความคอมมิต:

ขั้นตอนที่ 6: ใช้คำสั่ง git reset –soft

หากต้องการย้อนกลับการเปลี่ยนแปลงที่เพิ่มจากที่เก็บ Git ไปเป็นดัชนีการแสดงละคร ให้ใช้ ' คอมไพล์รีเซ็ต ” คำสั่งพร้อมกับ “– อ่อน ” และระบุตำแหน่ง HEAD ที่ต้องการเพื่อเลื่อนตัวชี้:

$ คอมไพล์รีเซ็ต --อ่อน หัว ~ 1

ขั้นตอนที่ 7: ตรวจสอบสถานะ Git

ตอนนี้ ตรวจสอบตำแหน่งการย้อนกลับของ HEAD ตรวจสอบสถานะที่เก็บ Git:

$ สถานะคอมไพล์

จะเห็นได้ว่า “ คอมไพล์รีเซ็ต - อ่อน ” คำสั่งส่งคืนการเปลี่ยนแปลงการคอมมิตไปยังดัชนีการจัดเตรียม Git นอกจากนี้ “ ไฟล์ 4.txt ไฟล์ ” อยู่ในดัชนีการจัดเตรียม Git และจำเป็นต้องคอมมิต:

ขั้นตอนที่ 8: ตรวจสอบบันทึก Git

หากต้องการดูตำแหน่งปัจจุบันของ HEAD ให้รันคำสั่งที่กำหนดพร้อมกับปุ่ม “ –ออนไลน์ ' ตัวเลือก:

$ บันทึกคอมไพล์ --ออนไลน์

ที่นี่ HEAD ชี้ไปที่ ' ไฟล์3 ' ให้สัญญา:

ขั้นตอนที่ 9: ใช้ git reset — คำสั่งผสม

หากต้องการเลิกทำการเปลี่ยนแปลงที่คอมมิตและลบไฟล์ออกจากพื้นที่จัดเตรียมโดยไม่ลบออกจากไดเร็กทอรีการทำงาน ให้ดำเนินการ ' $ git รีเซ็ต – ผสม ” คำสั่งพร้อมกับตำแหน่ง HEAD ที่จำเป็นของการกระทำ:

$ คอมไพล์รีเซ็ต --ผสม หัว ~ 1

ขั้นตอนที่ 10: ตรวจสอบสถานะ Git

ดูการเปลี่ยนแปลงที่เพิ่มใหม่โดยตรวจสอบสถานะที่เก็บ Git:

$ สถานะคอมไพล์

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

ขั้นตอนที่ 11: ตรวจสอบบันทึก Git

ตรวจสอบประวัติบันทึกการอ้างอิงที่เก็บ Git พร้อมกับแฮช SHA:

$ บันทึกคอมไพล์ --ออนไลน์

ขั้นตอนที่ 12: ใช้ git reset — hard Command

หากต้องการลบการเปลี่ยนแปลงที่เพิ่มออกจากไดเร็กทอรีการทำงานในเครื่องของ Git ให้ดำเนินการ ' $ git รีเซ็ต - ยาก ' สั่งการ:

$ คอมไพล์รีเซ็ต --แข็ง หัว ~ 1

ขั้นตอนที่ 13: ตรวจสอบตัวชี้ HEAD ที่กลับด้าน

ในการตรวจสอบตัวชี้ HEAD ให้ย้อนกลับไปยังตำแหน่งที่ระบุ เรียกใช้ “ บันทึกคอมไพล์ ' สั่งการ:

$ บันทึกคอมไพล์ --ออนไลน์

เอาต์พุตด้านล่างแสดงว่า HEAD ชี้ไปที่ ' เพิ่มไฟล์ 1 แล้ว ' ให้สัญญา:

ขั้นตอนที่ 14: ตรวจสอบสถานะ Git

หากต้องการดูการเปลี่ยนแปลงที่เพิ่ม ให้ตรวจสอบสถานะ Git:

$ สถานะคอมไพล์

จะเห็นได้ว่าเราไม่มีการติดตามและการเปลี่ยนแปลงที่รอดำเนินการของ “ ไฟล์ 2.txt ' ไฟล์. ดังนั้น File2.txt จึงถูกลบออกอย่างสมบูรณ์:

ขั้นตอนที่ 15: ตรวจสอบรายการเนื้อหาที่เก็บ

ในการตรวจสอบรายการที่เก็บเนื้อหา ให้เรียกใช้ “ ' สั่งการ:

$

อย่างที่คุณเห็น ' ไฟล์ 2.txt ไม่มีไฟล์ ” ในไดเร็กทอรีปัจจุบัน:

เราได้อธิบายความแตกต่างระหว่างตัวเลือก git reset –mixed, –soft และ –hard

บทสรุป

คอมไพล์รีเซ็ต คำสั่ง ” ใช้เพื่อรีเซ็ตการเปลี่ยนแปลง แก้ไขประวัติของที่เก็บ Git และแก้ไขข้อผิดพลาด “ คอมไพล์รีเซ็ต - อ่อน ” คำสั่งเก็บไฟล์และส่งคืนการเปลี่ยนแปลงการคอมมิตไปยังพื้นที่การจัดเตรียม Git ในทางตรงกันข้าม “ คอมไพล์รีเซ็ต - ผสม คำสั่ง ” ยกเลิกการคอมมิตการเปลี่ยนแปลงและลบไฟล์ออกจาก staging index โดยไม่ลบออกจากไดเร็กทอรีการทำงาน หากต้องการลบการเปลี่ยนแปลงทั้งหมดและลบออกจากพื้นที่ทำงานของ Git ให้คลิก “ คอมไพล์รีเซ็ต - ยาก ” สามารถใช้คำสั่ง บทความนี้แสดงความแตกต่างระหว่าง git reset –mixed, –soft และ –hard