Git Fetch: มาสเตอร์คลาส
เผยแพร่แล้ว: 2023-02-26 คำสั่ง 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" หากคุณกำลังทำงานกับที่เก็บระยะไกลเดียว
ดึงข้อมูลคอมไพล์
ซึ่งจะดึงข้อมูลอัปเดตใดๆ จากที่เก็บ "ต้นทาง" แต่จะไม่รวมการเปลี่ยนแปลงลงในไฟล์การทำงาน เราจะเห็นว่ามีสาขาใหม่ที่เรียกว่า "สาขาใหม่" ที่ได้รับมาให้เรา
เมื่อคุณใช้คำสั่ง fetch
แล้ว คุณจะเห็นรายการสาขาทั้งหมดบนรีโมต โดยใช้ตัวเลือก -r
(รีโมต) กับคำสั่งสาขา
git สาขา -r
ซึ่งแสดงรายการสาขาทั้งหมดที่รีโมตทราบ ซึ่งหลังจาก fetch
ก็จะอยู่ในที่เก็บในเครื่องของคุณด้วย
ดูแท็กที่เรียกมาทั้งหมด
ในทำนองเดียวกัน คุณสามารถใช้ตัวเลือก tag
(โปรดทราบว่ามันคือ “แท็ก” ที่ไม่มี “s”) เพื่อดูรายการแท็ก
แท็กคอมไพล์
ที่เกี่ยวข้อง: วิธีสลับ เพิ่ม และลบ Git Remotes
ทำดรายรันก่อน
แม้ว่า git fetch
จะไม่รวมการเปลี่ยนแปลงลงในไฟล์งานของคุณ แต่ก็ยังคงอัปเดตที่เก็บในเครื่องของคุณ หากคุณต้องการดูว่าคำสั่ง fetch
จะดำเนินการเปลี่ยนแปลงอะไรบ้างโดยไม่ต้องทำจริง ให้ใช้ตัวเลือก --dry-run
git fetch --dry-run
วิธีดึงสาขาเดียว
การดึงข้อมูลเกี่ยวกับสาขาเดียวเป็นเรื่องง่าย เพิ่มชื่อสาขาในบรรทัดคำสั่งเพื่อบอก fetch
คุณจำเป็นต้องรู้เกี่ยวกับสาขานั้นเท่านั้น
ที่นี่ เรากำลังบอกให้ fetch
ดึงสาขา “mary-feature” จากที่เก็บระยะไกล “origin”
git ดึงคุณลักษณะ mary ต้นกำเนิด
ตอนนี้รายละเอียดและเนื้อหาของรีโมตแบรนช์อยู่ในที่เก็บในเครื่องของคุณแล้ว คุณสามารถใช้คำสั่ง git checkout
เพื่อสร้างแบรนช์ใหม่และชำระเงินจากรีโมตแบรนช์ การดำเนินการนี้จะไม่เขียนทับไฟล์ที่มีอยู่ หากนี่เป็นครั้งแรกที่คุณใช้สาขานี้
git checkout -b mary-feature ต้นทาง/mary-feature
รับสาขาทั้งหมด
หากคุณใช้รีโมตหลายตัว คุณสามารถประหยัดเวลาได้โดยการดึงการเปลี่ยนแปลงทั้งหมดจากสาขาทั้งหมดกลับไปที่ที่เก็บในเครื่องของคุณโดยใช้ตัวเลือก --all
git fetch -- ทั้งหมด
เปรียบเทียบสาขาในพื้นที่และระยะไกล
หากต้องการดูว่าไฟล์ในรีโมตแบรนช์แตกต่างจากสำเนาในเครื่องของคุณอย่างไร ให้ใช้ git fetch
แล้วใช้คำสั่ง git log
โปรดทราบว่าสาขาในพื้นที่และระยะไกลมีเครื่องหมายจุดสองจุด “ ..
” คั่นระหว่างกัน ตัวเลือก --oneline
แสดงตัวระบุการยืนยันและข้อความการยืนยัน
ดึงข้อมูลคอมไพล์
บันทึก git --oneline mary-feature..origin/mary-feature.
การแสดงบรรทัดเดียวมีประโยชน์หากสาขามีการเปลี่ยนแปลงจำนวนมาก หากต้องการดูข้อมูลเพิ่มเติม ให้ละเว้นตัวเลือก --oneline
git log mary-feature..origin/mary-feature
ข้อมูลนี้แสดงเวลาและวันที่ของการยืนยันแต่ละครั้ง พร้อมด้วยข้อความยืนยันและรายละเอียดการติดต่อของผู้เขียนการเปลี่ยนแปลง
การซิงโครไนซ์ Local Branch กับ Remote Branch
หากคุณตัดสินใจว่าต้องการดำเนินการต่อและรวมการเปลี่ยนแปลงจากรีโมตแบรนช์เข้ากับไฟล์การทำงานในเครื่องของคุณ คุณสามารถใช้คำสั่งเหล่านี้ได้
เราจะตรวจสอบสาขาเพื่อให้แน่ใจว่าเรากำลังทำงานอยู่ สาขาปัจจุบันของเราที่ทำงานอยู่..
git checkout mary-คุณลักษณะ
ทางสาขาตรวจสอบให้เราแล้ว และแจ้งว่าเป็นเวอร์ชันหลังรีโมต เราสามารถใช้ git pull
เพื่ออัปเดต จากนั้น git status
เพื่อตรวจสอบสถานะของเรา
คอมไพล์ดึง
สถานะคอมไพล์
หากเราทำการเปลี่ยนแปลงบางอย่างกับไฟล์ในเครื่องของเรา Git จะแจ้งให้เราทราบเมื่อเราชำระเงินสาขาที่เราต้องทำการ git pull
เพื่อเริ่มการผสาน
git checkout mary-คุณลักษณะ
git pull
อย่างง่ายเริ่มกระบวนการดึงไฟล์และการรวม หรือเราสามารถดำดิ่งลงไปและใช้ git merge
เองก็ได้ เราจะเริ่มด้วยการตรวจสอบว่าเรากำลังทำงานกับสาขาที่ถูกต้อง
git checkout mary-คุณลักษณะ
เราจะบอกให้ git
รวม branch ปัจจุบันของเรากับ branch ใน remote repository มีคอมมิชชันที่แตกต่างกัน 6 รายการที่ต้องแก้ไข
เราต้องบอก Git ว่าเราต้องการรวมสาขาระยะไกลใด
git ผสานต้นกำเนิด / คุณสมบัติแมรี่
ตัวแก้ไขจะเปิดขึ้นเพื่อให้เราสามารถส่งข้อความยืนยันได้ เราสามารถยอมรับข้อความแนะนำหรือเพิ่มข้อความของเราเอง ตัวแก้ไขคือตัวแก้ไขเริ่มต้นของคุณ เว้นแต่ว่า Git จะได้รับการกำหนดค่าให้ใช้ตัวแก้ไขอื่น
บันทึกการเปลี่ยนแปลงของคุณเมื่อคุณพร้อมที่จะดำเนินการต่อ การผสานจะดำเนินการโดยอัตโนมัติเมื่อปิดตัวแก้ไข
การรวมของเราประสบความสำเร็จเพราะไม่มีความขัดแย้ง
ความขัดแย้งเกิดขึ้นเมื่อโค้ดบรรทัดเดียวกันถูกเปลี่ยนโดยนักพัฒนาตั้งแต่สองคนขึ้นไป หากเป็นกรณีนี้ Git จะทำเครื่องหมายข้อขัดแย้งในไฟล์ที่ได้รับผลกระทบ คุณจะต้องตรวจสอบการเปลี่ยนแปลงเหล่านั้นและเลือกว่าจะเก็บการเปลี่ยนแปลงใดไว้
ลูกสุนัขฝึกหัดครึ่งตัว
เช่นเดียวกับลูกสุนัขในการฝึก การดึง fetch
จะเรียกสิ่งที่คุณขอ แต่จะไม่ปล่อย หากคุณต้องการสิ่งที่ลูกสุนัขแสดงให้คุณเห็นจริงๆ คุณจะต้อง pull
ที่เกี่ยวข้อง: Git rebase: ทุกสิ่งที่คุณต้องรู้