Git Best Practices – วิธีใช้ประโยชน์สูงสุดจาก (g)it
เผยแพร่แล้ว: 2019-07-02Pull, 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
โครงการใหม่? ที่เก็บใหม่
การสร้าง repo ใหม่สำหรับทุกโครงการใหม่ที่คุณต้องการเริ่มทำงานเป็นเรื่องที่สมเหตุสมผลสำหรับองค์กร เมื่อเสร็จแล้วให้กดไปที่ GitHub
คุณลักษณะใหม่? ออกสาขา
เมื่อคุณได้สร้างโปรเจ็กต์ใหม่แล้ว จะสร้างฟีเจอร์ Git ใหม่ได้อย่างไร Git Branching ให้คุณสร้างและจัดการเวิร์กโฟลว์ที่มีการจัดระเบียบภายใน repo ของคุณ สมาชิกในทีมสามารถกำหนดสาขา Git ต่างๆ ให้ทำงานพร้อมกันได้ แต่แยกกันต่างหาก ให้ความหมายกับสาขา git ของคุณเสมอเพื่อให้คนอื่นรู้ว่าคุณกำลังทำอะไรอยู่
เริ่มต้นวันใหม่ด้วยการอยู่กับปัจจุบัน
"รีเบส" หรือรับเวอร์ชันล่าสุดซึ่งเป็นเวอร์ชันล่าสุดของโปรเจ็กต์ (ต้นแบบ) เสมอ ก่อนที่คุณจะเริ่มทำงานกับคุณลักษณะที่คุณสร้าง/กำหนดให้กับคุณ คุณไม่ต้องการเปลี่ยนแปลงไฟล์ที่ล้าสมัย
มีจุดตรวจเป็นระยะ
อย่าบันทึกความมุ่งมั่นของคุณสำหรับการเปลี่ยนแปลงครั้งใหญ่ “ยอมรับ” การเปลี่ยนแปลงเล็กๆ น้อยๆ บ่อยๆ เพื่อให้คุณและสมาชิกในทีมเข้าใจโค้ดได้ง่ายขึ้น การย้อนกลับและการติดตามทำได้ง่ายขึ้นเมื่อมีการเปลี่ยนแปลงเพียงเล็กน้อยและบ่อยครั้ง

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

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

สร้างงานใน Redmine

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

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