ขึ้นอยู่กับสิ่งที่คุณต้องการทำเมื่อคุณชำระเงินนั้น หากสิ่งที่คุณทำคือการตรวจสอบเพื่อให้คุณสามารถสร้างหรือทดสอบการแก้ไขนั้นได้ก็ไม่มีอะไรผิดปกติกับการทำงานกับหัวแยก อย่าลืมตรวจสอบสาขาจริงก่อนที่คุณจะทำการคอมมิตใด ๆ ( git checkout masterตัวอย่างเช่น) เพื่อที่คุณจะได้ไม่สร้างคอมมิตที่ไม่รวมอยู่ในสาขาใด ๆ
อย่างไรก็ตามหากคุณต้องการสร้างความมุ่งมั่นมากขึ้นโดยเริ่มจากจุดนั้นคุณควรสร้างสาขา หากคุณทำการกระทำที่ไม่ได้อ้างถึงโดยสาขาพวกเขาจะหลงทางได้ง่ายและในที่สุดก็จะถูกเก็บกวาดโดยคนเก็บขยะของ git เนื่องจากไม่มีอะไรอ้างถึง คุณสามารถสร้างสาขาใหม่โดยเรียกใช้:
git checkout -b newbranch ea3d5ed
เพื่อช่วยให้เห็นภาพนี่คือแผนภาพบางส่วนที่แสดงให้เห็นว่าการทำงานบนหัวแยกแตกต่างจากการทำงานในสาขา
เริ่มต้นด้วย 3 commits บนmasterA, B และ C masterคือสาขาปัจจุบันดังนั้นHEADชี้ไปmasterที่ซึ่งชี้ให้ยอมรับ C
ABC
* - * - * <- หลัก <- HEAD
ตอนนี้ถ้าเราคอมมิตคอมไพล์จะสร้างคอมมิตที่มี C เป็นพาเรนต์ (เพราะนั่นคือคอมมิตปัจจุบันชี้ไปที่จากHEADผ่านmaster) และจะอัพเดตmasterเพื่อชี้ไปที่คอมมิตใหม่นั้น ทั้งหมดกระทำของเราอยู่ในขณะนี้masterและชี้ไปที่ใหม่กระทำผ่านHEADmaster
เอบีซีดี
* - * - * - * <- หลัก <- HEAD
ตอนนี้ให้ตรวจสอบการออก B HEADให้เราแฝด
เอบีซีดี
* - * - * - * <- มาสเตอร์
^
\-- ศีรษะ
ทุกอย่างทำงานได้ดีที่นี่ เราสามารถดูไฟล์ทั้งหมดสร้างโปรแกรมทดสอบและอื่น ๆ เรายังสามารถสร้างคอมมิตใหม่ได้ แต่ถ้าเราทำเช่นนั้นไม่มีสาขาที่เราอยู่ดังนั้นเราจึงไม่สามารถชี้สาขาใด ๆ ในการกระทำใหม่นั้นได้ สิ่งเดียวที่ชี้ไปที่มันคือHEAD:
เอบีซีดี
* - * - * - * <- มาสเตอร์
\
* <- หัว
จ
หากเราตัดสินใจเช็คเอาต์masterอีกครั้งในภายหลังจะไม่มีสิ่งใดอ้างถึง E
เอบีซีดี
* - * - * - * <- หลัก <- HEAD
\
*
จ
เนื่องจากไม่มีสิ่งใดอ้างถึงจึงหาได้ยากและคอมไพล์พิจารณาว่ามีการกระทำโดยไม่มีการอ้างอิงใด ๆ ที่จะละทิ้ง (เกิดขึ้นได้บ่อยหากคุณ rebase หรือแก้ไขสควอชในหรือทำการจัดการประวัติที่สนุกสนานอื่น ๆ พวกเขามักจะเป็นตัวแทนของแพตช์ที่ถูกทิ้งร้าง ที่คุณไม่สนใจอีกต่อไป) หลังจากผ่านไประยะหนึ่งคอมไพล์จะพิจารณาว่าเป็นขยะเพื่อทิ้งในครั้งต่อไปที่เรียกเก็บขยะ
ดังนั้นแทนที่จะตรวจสอบการแก้ไขที่เปลือยเปล่าและถอดหัวออกหากคุณรู้สึกว่ากำลังจะทำอะไรมากขึ้นคุณควรใช้git checkout -b branch Bเพื่อสร้างสาขาและตรวจสอบ ตอนนี้ความมุ่งมั่นของคุณจะไม่สูญหายเนื่องจากจะรวมอยู่ในสาขาที่คุณสามารถอ้างถึงได้อย่างง่ายดายและรวมในภายหลัง
เอบีซีดี
* - * - * - * <- มาสเตอร์
^
\ - สาขา <- HEAD
หากคุณลืมทำสิ่งนี้และสร้างคอมมิชชันจากสาขาก็ไม่จำเป็นต้องกังวล git checkout -b branchคุณสามารถสร้างสาขาหมายถึงการแก้ไขหัวด้วย หากคุณเปลี่ยนกลับไปที่masterสาขาแล้วและตระหนักว่าคุณลืมการกระทำที่หลงผิดคุณสามารถค้นหาได้โดยใช้git reflogซึ่งจะแสดงประวัติของสิ่งที่กระทำHEADในช่วงสองสามวันที่ผ่านมา ทุกสิ่งที่ยังอยู่ในการอ้างอิงจะไม่ถูกเก็บรวบรวมและโดยทั่วไปข้อมูลอ้างอิงจะถูกเก็บไว้ในบล็อกอ้างอิงเป็นเวลาอย่างน้อย 30 วัน