Git ป้องกันไม่ให้คุณดึงไฟล์ไปยังเครื่องของคุณ หากการเปลี่ยนแปลงที่ไม่ได้บันทึกหรือไม่ได้ติดตามจะถูกเขียนทับโดยการดำเนินการผสาน คุณสามารถใช้วิธีการดึงแรงเพื่อบังคับให้ Git ดึงการเปลี่ยนแปลงที่คุณต้องการรับในเครื่องคอมพิวเตอร์ของคุณ
ในคู่มือนี้ เราจะพูดถึงวิธีการบังคับดึงเนื้อหาของที่เก็บ Git โดยมีการอ้างอิงถึงตัวอย่าง เราจะพูดถึงคำสั่ง git pull and fetch และวิธีใช้ตัวเลือกรีเซ็ตเพื่อบังคับให้ดึง
การดึงคืออะไร
การดำเนินการดึง Git จะดาวน์โหลดข้อมูลเมตาและไฟล์ทั้งหมดจากที่เก็บระยะไกลและอัปเดตที่เก็บในเครื่องตามข้อมูลที่ดึงมา
การดึงเป็นวิธีที่ใช้เพื่อทำให้ไฟล์ในเครื่องของคุณสอดคล้องกับเวอร์ชันระยะไกลของที่เก็บ คุณจะต้องดึงที่เก็บหากต้องการดาวน์โหลดการเปลี่ยนแปลงที่คนอื่นทำกับที่เก็บระยะไกล การดึงไม่เกิดขึ้นโดยอัตโนมัติ
การดึงไม่สามารถเกิดขึ้นได้เมื่อคุณมีไฟล์ที่ไม่ได้ติดตามซึ่งจะถูกเขียนทับ ซึ่งหมายความว่าคุณมีไฟล์ในสาขาท้องถิ่นของคุณที่ยังไม่ได้เพิ่มไปยังที่เก็บ Git และจะถูกแทนที่หากเกิดการดึงขึ้น
คุณไม่สามารถดึงที่เก็บได้หากคุณมีการเปลี่ยนแปลงที่ยังไม่ได้บันทึกในเครื่องของคุณซึ่งจะถูกเขียนทับโดยการดึง
Git:แรงดึง
เรากำลังดำเนินการกับพื้นที่เก็บข้อมูลที่เรียกว่า ck-git ซึ่งมีโค้ดสำหรับโครงการบนเว็บ ผู้ทำงานร่วมกันเพิ่งอัปเดตไฟล์ชื่อ README.md เราได้อัปเดตไฟล์นั้นในเครื่องของเราแล้วและไม่ได้ส่งการเปลี่ยนแปลงไปยังที่เก็บ
มาดูกันว่าจะเกิดอะไรขึ้นเมื่อเราพยายามดึงการเปลี่ยนแปลงของเรา:
81% ของผู้เข้าร่วมกล่าวว่าพวกเขารู้สึกมั่นใจมากขึ้นเกี่ยวกับโอกาสในการทำงานด้านเทคโนโลยีหลังจากเข้าร่วม bootcamp จับคู่กับ Bootcamp วันนี้
ผู้สำเร็จการศึกษาจากหลักสูตร bootcamp โดยเฉลี่ยใช้เวลาน้อยกว่าหกเดือนในการเปลี่ยนอาชีพ ตั้งแต่เริ่มต้น bootcamp ไปจนถึงหางานแรก
git pull
คำสั่งนี้ส่งคืนข้อผิดพลาด:
error: Your local changes to the following files would be overwritten by merge: README.md Please, commit your changes or stash them before you can merge.
เรามีสามตัวเลือก เราสามารถยืนยันการเปลี่ยนแปลง ซ่อน หรือบังคับให้ Git ดึงการเปลี่ยนแปลงต่อไป สิ่งเหล่านี้จะเขียนทับไฟล์ของเรา
เราสามารถบังคับให้ Git ดึงการเปลี่ยนแปลงโดยดึงการเปลี่ยนแปลงใด ๆ ที่เกิดขึ้นแล้วรีเซ็ตที่เก็บของเราเพื่อแสดงการเปลี่ยนแปลงเหล่านั้น เริ่มต้นด้วยการดึงข้อมูลการเปลี่ยนแปลงโดยใช้คำสั่ง git fetch:
git fetch --all
คำสั่งนี้ดึงข้อมูลเมตาทั้งหมดสำหรับการเปลี่ยนแปลงที่ทำกับที่เก็บระยะไกลของเรา ต่อไป เราจะสำรองข้อมูลสาขาปัจจุบันของเรา เราทำเช่นนี้เพื่อให้แน่ใจว่าเราจะไม่สูญเสียงานของเราเมื่อโค้ดของเราถูกเขียนทับ
เราสามารถสำรองข้อมูลสาขาของเราโดยใช้คำสั่ง git branch:
git branch backup
คำสั่งนี้สร้างสาขาใหม่ที่เรียกว่า "สำรอง" ตอนนี้เรามีแบรนช์สำรองแล้ว เราสามารถรีเซ็ตที่เก็บของเราเพื่อแสดงเนื้อหาของที่เก็บรีโมตของเรา
เราจะใช้คำสั่ง git reset เพื่ออัปเดตที่เก็บของเรา:
git reset --hard origin/master
อ็อพชัน –hard จะดาวน์โหลดไฟล์ทั้งหมดจากรีโมตที่เก็บและเพิ่มลงในสำเนาการทำงานในเครื่องของโปรเจ็กต์ การดำเนินการนี้จะเขียนทับการเปลี่ยนแปลงใดๆ ที่คุณได้ทำไว้
คำสั่งต้นทาง/หลักหมายถึงสาขาที่เรากำลังดึงข้อมูล เรากำลังดาวน์โหลดเนื้อหาของสาขา "หลัก" จากที่เก็บระยะไกล "ต้นทาง" ของเรา
หากคุณกำลังทำงานกับที่เก็บที่มีสาขาหรือชื่อรีโมตอื่น คุณสามารถใช้สูตรนี้เพื่อเป็นแนวทางในการใช้คำสั่งรีเซ็ต:
git reset --hard <remote>/<branch>
คำสั่ง git reset จะรีเซ็ตที่เก็บของเราเป็นคอมมิตล่าสุดที่เราดึงมา
การบันทึกการเปลี่ยนแปลงที่ไม่ถูกผูกมัด
คุณสามารถบันทึกการเปลี่ยนแปลงที่ไม่ได้ผูกมัดที่คุณได้ทำไว้โดยใช้คำสั่ง git stash คำสั่งนี้ให้คุณ "ซ่อน" รหัสของคุณในภายหลัง มาสร้างที่เก็บโค้ดของเรากัน:
git stash
การเปลี่ยนแปลงทั้งหมดที่เราทำกับที่เก็บของเราจะถูกบันทึกไว้ในที่เก็บถาวร เมื่อเราพร้อมที่จะทำงานกับการเปลี่ยนแปลงเหล่านั้นอีกครั้ง เราสามารถ "เปิด" ที่ซ่อนของเราได้:
git stash pop
คุณสามารถอ่านเพิ่มเติมเกี่ยวกับการบันทึกด้วย git stash ได้ในบทช่วยสอน git stash ของเรา
บทสรุป
คุณสามารถบังคับให้ที่เก็บ Git ดึงเนื้อหาจากที่เก็บระยะไกลได้ ในการดำเนินการนี้ คุณต้องดึงเนื้อหาของที่เก็บ เมื่อคุณดึงที่เก็บแล้ว คุณสามารถรีเซ็ตการเปลี่ยนแปลงของคุณไปยังสาขาบนที่เก็บระยะไกลที่คุณต้องการให้ codebase ของคุณใช้งานได้
ตอนนี้คุณมีความรู้ที่จำเป็นในการบังคับ Git pull อย่างมืออาชีพแล้ว!