Git Fetch: มาสเตอร์คลาส

เผยแพร่แล้ว: 2023-02-26
แล็ปท็อป Linux แสดงหน้าต่างเทอร์มินัลที่มีรูปแบบลูกโลกเป็นพื้นหลังและลายน้ำแบบไบนารี
fatmawati achmad zaenuri/Shutterstock.com
คำสั่ง git fetch เหมือนกับคำสั่ง git pull ที่อัปเดตที่เก็บในเครื่องของคุณด้วยข้อมูลและคอมมิตจากที่เก็บระยะไกล โดยไม่ต้องเขียนทับไฟล์ทำงานของคุณ

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

สารบัญ

git fetch คืออะไร และทำหน้าที่อะไร
การดึง Git เทียบกับการดึง
ซิงค์พื้นที่เก็บข้อมูลในเครื่องและระยะไกลของคุณด้วย git fetch
ดูแท็กที่เรียกมาทั้งหมด
ทำดรายรันก่อน
วิธีดึงสาขาเดียว
รับสาขาทั้งหมด
เปรียบเทียบสาขาในพื้นที่และระยะไกล
การซิงโครไนซ์ Local Branch กับ Remote Branch
ลูกสุนัขฝึกหัดครึ่งตัว

git fetch คืออะไร และทำหน้าที่อะไร

คำสั่ง fetch ใน Git ดาวน์โหลดคอมมิต ไฟล์ และข้อมูลอื่นๆ จากที่เก็บระยะไกลไปยังที่เก็บในเครื่องของคุณอย่างปลอดภัย ใช้การดึงข้อมูลเมื่อคุณต้องการดูว่านักพัฒนารายอื่นทำการเปลี่ยนแปลงอะไรบ้าง โดยไม่ต้องถูกบังคับให้ยอมรับการเปลี่ยนแปลง ไฟล์ในเครื่องของคุณยังคงไม่ถูกแตะต้อง เหตุใดจึงสำคัญ

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

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

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

การดึง Git เทียบกับการดึง

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

หรือพูดอีกอย่างคือ คำสั่ง git pull เหมือนกับการ git fetch ตามด้วย git merge ทันที

ซิงค์พื้นที่เก็บข้อมูลในเครื่องและระยะไกลของคุณด้วย git fetch

ในการดึงข้อมูลเมตาที่อัปเดตทั้งหมดและคอมมิตจากที่เก็บระยะไกลไปยังที่เก็บในเครื่องของคุณ ให้ใช้คำสั่ง git fetch ที่มีชื่อหรือ URL ของที่เก็บระยะไกล ตามค่าดีฟอลต์ รีโมตที่เก็บแรกจะเรียกว่า "origin"

 กำเนิดการดึงข้อมูลคอมไพล์

คุณสามารถละเว้นคำว่า "origin" หากคุณกำลังทำงานกับที่เก็บระยะไกลเดียว

 ดึงข้อมูลคอมไพล์ 

การใช้คำสั่ง git fetch บนที่เก็บรีโมตเริ่มต้น

ซึ่งจะดึงข้อมูลอัปเดตใดๆ จากที่เก็บ "ต้นทาง" แต่จะไม่รวมการเปลี่ยนแปลงลงในไฟล์การทำงาน เราจะเห็นว่ามีสาขาใหม่ที่เรียกว่า "สาขาใหม่" ที่ได้รับมาให้เรา

เมื่อคุณใช้คำสั่ง fetch แล้ว คุณจะเห็นรายการสาขาทั้งหมดบนรีโมต โดยใช้ตัวเลือก -r (รีโมต) กับคำสั่งสาขา

 git สาขา -r 

กำลังดูสาขาที่มีอยู่ในรีโมตเริ่มต้น

ซึ่งแสดงรายการสาขาทั้งหมดที่รีโมตทราบ ซึ่งหลังจาก fetch ก็จะอยู่ในที่เก็บในเครื่องของคุณด้วย

ดูแท็กที่เรียกมาทั้งหมด

ในทำนองเดียวกัน คุณสามารถใช้ตัวเลือก tag (โปรดทราบว่ามันคือ “แท็ก” ที่ไม่มี “s”) เพื่อดูรายการแท็ก

 แท็กคอมไพล์ 

การใช้คำสั่งแท็ก git เพื่อแสดงรายการแท็กในที่เก็บในเครื่อง

ที่เกี่ยวข้อง: วิธีสลับ เพิ่ม และลบ Git Remotes

ทำดรายรันก่อน

แม้ว่า git fetch จะไม่รวมการเปลี่ยนแปลงลงในไฟล์งานของคุณ แต่ก็ยังคงอัปเดตที่เก็บในเครื่องของคุณ หากคุณต้องการดูว่าคำสั่ง fetch จะดำเนินการเปลี่ยนแปลงอะไรบ้างโดยไม่ต้องทำจริง ให้ใช้ตัวเลือก --dry-run

 git fetch --dry-run 

การใช้ตัวเลือก --dry-run เพื่อดูการเปลี่ยนแปลงที่คำสั่ง fetch จะดึงมา

วิธีดึงสาขาเดียว

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

ที่นี่ เรากำลังบอกให้ fetch ดึงสาขา “mary-feature” จากที่เก็บระยะไกล “origin”

 git ดึงคุณลักษณะ mary ต้นกำเนิด 

ใช้ git fetch เพื่อดึงรีโมตสาขาเดียว

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

 git checkout -b mary-feature ต้นทาง/mary-feature 

ตรวจสอบสาขาระยะไกลที่ดึงข้อมูลอย่างปลอดภัยไปยังสาขาท้องถิ่นใหม่

รับสาขาทั้งหมด

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

 git fetch -- ทั้งหมด

เปรียบเทียบสาขาในพื้นที่และระยะไกล

หากต้องการดูว่าไฟล์ในรีโมตแบรนช์แตกต่างจากสำเนาในเครื่องของคุณอย่างไร ให้ใช้ git fetch แล้วใช้คำสั่ง git log

โปรดทราบว่าสาขาในพื้นที่และระยะไกลมีเครื่องหมายจุดสองจุด “ .. ” คั่นระหว่างกัน ตัวเลือก --oneline แสดงตัวระบุการยืนยันและข้อความการยืนยัน

 ดึงข้อมูลคอมไพล์
 บันทึก git --oneline mary-feature..origin/mary-feature. 

ใช้ git เพื่อดึงการเปลี่ยนแปลงระยะไกลและ git log เพื่อแสดงการเปลี่ยนแปลง

การแสดงบรรทัดเดียวมีประโยชน์หากสาขามีการเปลี่ยนแปลงจำนวนมาก หากต้องการดูข้อมูลเพิ่มเติม ให้ละเว้นตัวเลือก --oneline

 git log mary-feature..origin/mary-feature 

ละเว้น --oneline ตัวเลือกเพื่อให้ thatgit แสดงรายละเอียดเพิ่มเติมสำหรับแต่ละการกระทำ

ข้อมูลนี้แสดงเวลาและวันที่ของการยืนยันแต่ละครั้ง พร้อมด้วยข้อความยืนยันและรายละเอียดการติดต่อของผู้เขียนการเปลี่ยนแปลง

การซิงโครไนซ์ Local Branch กับ Remote Branch

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

เราจะตรวจสอบสาขาเพื่อให้แน่ใจว่าเรากำลังทำงานอยู่ สาขาปัจจุบันของเราที่ทำงานอยู่..

 git checkout mary-คุณลักษณะ 

ตรวจสอบสาขา

ทางสาขาตรวจสอบให้เราแล้ว และแจ้งว่าเป็นเวอร์ชันหลังรีโมต เราสามารถใช้ git pull เพื่ออัปเดต จากนั้น git status เพื่อตรวจสอบสถานะของเรา

 คอมไพล์ดึง
 สถานะคอมไพล์ 

การดึงการเปลี่ยนแปลงจากที่เก็บ rmeote ไปยังโลคัล

หากเราทำการเปลี่ยนแปลงบางอย่างกับไฟล์ในเครื่องของเรา Git จะแจ้งให้เราทราบเมื่อเราชำระเงินสาขาที่เราต้องทำการ git pull เพื่อเริ่มการผสาน

 git checkout mary-คุณลักษณะ 

Git แจ้งให้เราทราบว่า brnahces ในพื้นที่และระยะไกลได้แยกออกจากกันและจำเป็นต้องรวมเข้าด้วยกัน

git pull อย่างง่ายเริ่มกระบวนการดึงไฟล์และการรวม หรือเราสามารถดำดิ่งลงไปและใช้ git merge เองก็ได้ เราจะเริ่มด้วยการตรวจสอบว่าเรากำลังทำงานกับสาขาที่ถูกต้อง

 git checkout mary-คุณลักษณะ 

Git แจ้งให้เราทราบว่า brnahces ในพื้นที่และระยะไกลได้แยกออกจากกันและจำเป็นต้องรวมเข้าด้วยกัน

เราจะบอกให้ git รวม branch ปัจจุบันของเรากับ branch ใน remote repository มีคอมมิชชันที่แตกต่างกัน 6 รายการที่ต้องแก้ไข

ข้อความผสานสำเร็จ

เราต้องบอก Git ว่าเราต้องการรวมสาขาระยะไกลใด

 git ผสานต้นกำเนิด / คุณสมบัติแมรี่ 

ใช้การผสานคอมไพล์เพื่อรวม chnages ระยะไกลเข้ากับสาขาท้องถิ่น

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

แก้ไขข้อความคอมมิต

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

การรวมของเราประสบความสำเร็จเพราะไม่มีความขัดแย้ง

ข้อความผสานสำเร็จ

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

ลูกสุนัขฝึกหัดครึ่งตัว

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

ที่เกี่ยวข้อง: Git rebase: ทุกสิ่งที่คุณต้องรู้