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