Git Best Practices – วิธีใช้ประโยชน์สูงสุดจาก (g)it

เผยแพร่แล้ว: 2019-07-02

Pull, Fetch, Commit, Push, Merge, Rebase – เงื่อนไขเหล่านี้สามารถเข้ามาในชีวิตประจำวันของคุณแล้วหรือยัง? เมื่อ Linus Torvalds สร้าง Git เวอร์ชันแรกของเขา เขาอธิบายว่ามันเป็น "เครื่องมือติดตามเนื้อหาที่โง่เขลา" กรอไปข้างหน้าจนถึงปัจจุบัน ซอฟต์แวร์โอเพนซอร์ซฟรีนี้เป็นระบบควบคุมเวอร์ชันที่ได้รับความนิยมมากที่สุด

Git คืออะไร?

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

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

ทำไมต้องใช้ Git?

1. สถาปัตยกรรมแบบกระจาย

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

2. ประสิทธิภาพอันทรงพลัง

การแยกสาขา การรวม การคอมมิต ฯลฯ ทำได้ง่ายและรวดเร็วด้วยเวิร์กโฟลว์ Git เนื่องจากอัลกอริธึมความรู้เชิงลึกอัจฉริยะที่เข้าใจรูปแบบการเข้าถึง T.


3. ปลอดภัย

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


4. โอเพ่นซอร์ส

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


5. เผยแพร่เร็วขึ้น

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

Git - สถาปัตยกรรมแบบกระจาย

Git - สถาปัตยกรรมแบบกระจาย

แนวทางปฏิบัติที่ดีที่สุดสำหรับ Git

  • โครงการใหม่? ที่เก็บใหม่

การสร้าง repo ใหม่สำหรับทุกโครงการใหม่ที่คุณต้องการเริ่มทำงานเป็นเรื่องที่สมเหตุสมผลสำหรับองค์กร เมื่อเสร็จแล้วให้กดไปที่ GitHub

  • คุณลักษณะใหม่? ออกสาขา

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

  • เริ่มต้นวันใหม่ด้วยการอยู่กับปัจจุบัน

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

  • มีจุดตรวจเป็นระยะ

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

  • เก็บตกงาน

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

  • บีบพวกเขากระทำ

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

  • คอมมิตข้อความ

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

git-commit ข้อความ

https://xkcd.com/1296/

  • อย่าเปลี่ยนประวัติศาสตร์

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

  • ใช้โปรแกรมแก้ไข Git

บางครั้งเมื่อคุณไม่มีสิทธิ์เขียนในที่เก็บข้อมูล แต่คุณยังต้องการแก้ไขจุดบกพร่อง - ใช้โปรแกรมแก้ไข Git อย่าลืมโคลนที่เก็บหลัก แล้วสร้างสาขาสำหรับคุณลักษณะใหม่ เมื่อคุณมีไฟล์ .patch พร้อมแล้ว ให้ดูตัวอย่างไฟล์และเรียกใช้แบบแห้งเพื่อตรวจสอบข้อผิดพลาด Git ใช้โปรแกรมแก้ไข (git Apply -R path/file.patch) เมื่อเสร็จแล้ว อย่าลืมที่จะทดสอบและตรวจสอบสำหรับ

  • อย่าปล่อยให้ดึงคำขอออกนานเกินไป

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

  • จัดระเบียบได้ดีขึ้นด้วยเครื่องมือการจัดการโครงการ

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

เครื่องมือการจัดการโครงการ Git

สร้างงานใน Redmine

การสร้างสาขา git

การสร้างสาขาด้วย Task id และชื่อ
  • GitLab CI/CD

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

Gitlab CI

GitLab CI/CD รายการงาน

Git แนวทางปฏิบัติที่ดีที่สุดกราฟิก