Git คือ ตอนที่ 4 : การทำงานระยะไกล (Remotes) และการทำงานร่วมกัน (Collaboration)

  1. ทำความเข้าใจ Git Remotes
  2. การโคลน (Cloning) พื้นที่เก็บข้อมูล (Repository)
  3. การทำงานกับรีโมท (Remotes)
  4. การส่ง (Pushing) ไปที่รีโมต
  5. การ Fetching และ Pulling จากระยะไกล (Remote)
  6. เวิร์กโฟลว์การทำงานร่วมกัน (Collaboration Workflows)

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

1. ทำความเข้าใจ Git Remotes

ในบริบทของ Git โดยทั่วไปแล้วรีโมตหมายถึงเวอร์ชันของโปรเจ็กต์ของคุณซึ่งอยู่ในอินเทอร์เน็ตหรือเครือข่าย ซึ่งโฮสต์บนบริการต่างๆ เช่น GitHub, GitLab หรือ Bitbucket คำว่า ‘remote’ เป็นรูปแบบย่อของ ‘repository ระยะไกล’

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

การทำงานกับที่เก็บระยะไกลเกี่ยวข้องกับการทำความเข้าใจคำสั่ง Git หลักหลายคำสั่ง:

  • git clone: คำสั่งนี้ช่วยให้คุณสามารถคัดลอกที่เก็บ Git ที่มีอยู่จาก URL เฉพาะไปยังเครื่องของคุณ โดยทั่วไป การดำเนินการนี้เป็นวิธีที่คุณนำโปรเจ็กต์เข้าสู่คอมพิวเตอร์เป็นครั้งแรก
  • git remote: git remote คำสั่งอนุญาตให้คุณสร้าง ดู และลบการเชื่อมต่อกับที่เก็บอื่น
  • git push: git push คำสั่งใช้เพื่ออัปโหลดการกระทำของคุณไปยังที่เก็บระยะไกล
  • git pull: git pull คำสั่งดึงการเปลี่ยนแปลงจากที่เก็บระยะไกลและรวมเข้ากับสาขาปัจจุบันของคุณ
  • git fetch: ไม่เหมือนกับ git pullรับgit fetch การเปลี่ยนแปลงจากที่เก็บระยะไกล แต่ไม่ได้รวมเข้าด้วยกัน แต่จะเปิดโอกาสให้คุณตรวจสอบการเปลี่ยนแปลงก่อนที่จะรวมเข้ากับสาขาในพื้นที่ของคุณ

2. การโคลน (Cloning) พื้นที่เก็บข้อมูล (Repository)

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

git clone https://github.com/username/repository.git

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

3. การทำงานกับรีโมท (Remotes)

หลังจากการโคลนที่เก็บ คุณสามารถใช้ git remote คำสั่งเพื่อยืนยันว่าการโคลนได้ตั้งค่าชื่อรีโมต origin ที่ชี้ไปยังที่เก็บดั้งเดิม:

git remote -v

แฟล็ก -v หมายถึง “verbose” ซึ่งสั่งให้ Git แสดง URL ของที่เก็บระยะไกลเมื่อแสดงรายการ ตามค่าเริ่มต้น ที่เก็บดั้งเดิมที่คุณลอกแบบมาจะมี origin ชื่อว่า

คุณอาจต้องการเพิ่มรีโมตอื่นๆ เพื่อทำงานร่วมกับสมาชิกในทีมคนอื่นๆ คำสั่ง git remote add อนุญาตให้คุณสร้างการเชื่อมต่อใหม่ไปยังที่เก็บระยะไกล หลังจากเพิ่มรีโมตแล้ว คุณสามารถใช้ชื่อย่อในคำสั่ง Git อื่นๆ เพื่ออ้างอิงที่เก็บ:

git remote add teammate https://github.com/teammate/repository.git

4. การส่ง (Pushing) ไปที่รีโมต

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

git push origin master

ตอนนี้ เพื่อนร่วมทีมของคุณสามารถดูและเข้าถึงการเปลี่ยนแปลงของคุณในที่เก็บข้อมูลระยะไกล

5. การ Fetching และ Pulling จากระยะไกล (Remote)

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

git pull origin master

หากต้องการตรวจสอบการเปลี่ยนแปลงก่อนการรวม คุณสามารถใช้ git fetch คำสั่ง คำสั่งนี้ดึงการเปลี่ยนแปลงแต่เก็บไว้ในสาขาใหม่:

git fetch origin

หลังจากตรวจสอบการเปลี่ยนแปลงแล้ว คุณสามารถผสานเข้ากับสาขาของคุณโดยใช้ git merge คำสั่ง

6. เวิร์กโฟลว์การทำงานร่วมกัน (Collaboration Workflows)

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

ตรง feature branch workflow ไปตรงมาและช่วยให้การพัฒนาพร้อมกันในทีม คุณลักษณะทั้งหมดมีสาขาเฉพาะซึ่งสามารถพุชไปยังที่เก็บส่วนกลางได้โดยไม่กระทบกับบรรทัดโค้ดหลัก นักพัฒนารายอื่นสามารถดึงสาขาฟีเจอร์และสนับสนุน และเมื่อฟีเจอร์พร้อม ก็สามารถรวมเข้ากับสาขาหลักได้

รูปแบบความร่วมมืออีกรูป แบบหนึ่งคือ Gitflow workflow ซึ่งเกี่ยวข้องกับการมีสองสาขาหลัก develop และ master สาขา master จัดเก็บประวัติการเผยแพร่อย่างเป็นทางการ และ develop สาขาทำหน้าที่เป็นสาขาการรวมสำหรับฟีเจอร์ต่างๆ ฟีเจอร์ใหม่แต่ละรายการควรอยู่ในสาขาของตัวเอง ซึ่งสามารถพุชไปยังที่เก็บส่วนกลางสำหรับการสำรองข้อมูล/การทำงานร่วมกัน เมื่อสาขาคุณสมบัติพร้อมที่จะไป มันจะถูกรวมเข้ากับ develop สาขา

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


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

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


Git คืออะไร

Git คือ ตอนที่ 3 : การแตกแขนง (Branching) และการผสาน (Merging)
Git คือ ตอนที่ 5 : การเลิกทำการเปลี่ยนแปลง (Undoing Changes)