Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> การเขียนโปรแกรม

Git:แรงดึง

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 อย่างมืออาชีพแล้ว!