มีน้องคนหนึ่งถามผมว่า ถ้าในทีมมีกันอยู่ 3 คน คนหนึ่ง push git บ่อย อีกคนไม่ค่อยได้ push อีกคนก็บ่อยเหมือนกับคนแรก ทีนี้ถ้าหากว่า git remote มันพังขึ้นมา เราจะเอา git ของคนไหนเป็นหลัก
ผมตอบไปว่า ไม่ต้องสนใจว่าเอาของใครเป็นต้นแบบ เอาของใครก็ได้ ต่อให้เอาของคนที่ไม่ค่อยจะได้ push pull โปรเจ็กยังได้เลย เดี๋ยวเมื่อคนอื่นๆในทีมต่อเข้ามาที่ git ตัวใหม่ที่สร้างขึ้นมา มันจะ sync ของมันเอง
วันนี้ผมลองทำตามโจทย์นี้แล้วจับภาพมาให้ดูว่ามันจริง ตามนั้น
- ผมสร้างโปรเจ็กขึ้นมาที่ github ชื่อ beautiful-mind เพื่อเป็นการทดสอบ
- เนื่องจากผมไม่มีเพื่อนสำหรับทดสอบ เลยใช้วิธี clone beautiful-mind ออกมาเป็น 3 โปรเจ็กในเครื่อง
beautiful-mind
beautiful-mind-2
beautiful-mind-3แล้วลองทดสอบให้แต่ละโปรเจ็ก commit push บ่อยและถี่ไม่เท่ากัน
push จาก beautiful-mind ขึ้นไป
beautiful-mind-2 pull ลงมาแล้ว push ข้อมูลใหม่ขึ้นไป
เปลี่ยนมา beautiful-mind commit
สลับกันไปมั่วๆ
- จากนั้นสมมติว่า remote git พัง ผมเลยลบทิ้งแล้วสร้างขึ้นมาใหม่
- เนื่องจากผมตั้งชื่อ git เป็นชื่อเดิมโปรเจ็กที่เราเคย clone ลงมาเลยไม่ต้องแก้อะไร แต่ถ้าหากว่าตั้งชื่อ git เป็นชื่อใหม่ โปรเจ็กที่เคย clone มาก็ต้องไปแก้ remote เอา
จากที่ผมทำผมตั้งใจให้ beautiful-mind-3 เป็นตัวที่อัปเดตน้อยสุดแล้ว แต่ผมจะให้มันเอาโค้ด push ขึ้น git ใหม่เป็นคนแรก
อันนี้ผมลอง pull มันจะแจ้งอย่างนี้
beautiful-mind-3 push โค้ด
จากนั้นก็ทยอยให้ beautiful-mind-2 , beautiful-mind pull และ push โค้ดในส่วนของตนขึ้นไป เมื่อ push โค้ดครบทั้ง 3 แล้ว ให้ทั้ง 3 pull โค้ดอีกรอบเพื่อปรับโค้ดให้เท่ากันทุกคน
- สุดท้ายแล้วทั้ง 3 คนจะมีโค้ดชุดเดียวกัน
สรุป ครับ จะเห็นว่าเราไม่ต้องสนใจเลยว่าใครจะเป็นต้นแบบของโค้ด นี่แหละครับ distributed source control
Leave a Reply