ฉันไม่สามารถคิดถึงเวลาที่ฉันจะใช้git merge
มากกว่าgit rebase
และไม่ต้องการให้มีการแสดง มีวิธีการกำหนดค่า git ให้ส่งต่ออย่างรวดเร็วโดยค่าเริ่มต้นหรือไม่ ความจริงที่ว่ามี--ff
ตัวเลือกที่ดูเหมือนจะบ่งบอกว่ามีวิธี แต่ฉันไม่สามารถหาได้ในเอกสาร
ฉันไม่สามารถคิดถึงเวลาที่ฉันจะใช้git merge
มากกว่าgit rebase
และไม่ต้องการให้มีการแสดง มีวิธีการกำหนดค่า git ให้ส่งต่ออย่างรวดเร็วโดยค่าเริ่มต้นหรือไม่ ความจริงที่ว่ามี--ff
ตัวเลือกที่ดูเหมือนจะบ่งบอกว่ามีวิธี แต่ฉันไม่สามารถหาได้ในเอกสาร
คำตอบ:
ใช่--no-ff
แล้ว คุณสามารถกำหนดค่าตัวเลือกการผสานต่อสาขาได้เช่น
git config branch.master.mergeoptions "--no-ff"
เพิ่มสิ่งต่อไปนี้ใน$(REPO)/.git/config
ไฟล์ของคุณ:
[branch "master"]
mergeoptions = --no-ff
เชิงอรรถ: การพูดถึงประสบการณ์ของฉันในที่สุดฉันก็พบว่าการเปลี่ยนไปข้างหน้าอย่างรวดเร็วเป็นประโยชน์สำหรับผู้ที่มาใหม่มาก - แต่เมื่อความรู้สึกสำหรับเวิร์กโฟลว์และแนวคิดเริ่มจมลงในคุณแน่นอนต้องการหลีกเลี่ยงการทำให้กราฟบันทึกของคุณยุ่งเหยิง รีโมตชนิดของ. blarf '
Footnote 2 ทศวรรษต่อมา: คำตอบอื่น ๆ ด้านล่างมีตัวเลือกการกำหนดค่าที่ทันสมัยกว่า แต่จริงๆแล้วคุณอาจต้องการอยู่กับค่าเริ่มต้น (เช่นการส่งต่อที่รวดเร็วเมื่อใดก็ตามที่เป็นไปได้) ในวันและอายุนี้เนื่องจากการผสานที่ว่างเปล่า สร้างประวัติศาสตร์ให้ยากขึ้นด้วยเหตุผล
git pull
เป็น+git fetch
git merge
git merge --no-ff (branchname)
ล่ะ และฉันต้องการที่git pull
จะทำงานเหมือนที่เคยมีมา?
ดูเหมือนว่ายังมีคำถามที่ค้างอยู่ในเธรด: วิธีทำทั่วโลก (เช่นสำหรับสาขาทั้งหมด)? สำหรับบันทึกเราสามารถใช้สิ่งต่อไปนี้:
git config --add merge.ff false
... เพื่อให้ใช้ได้กับทุกสาขาในที่เก็บปัจจุบัน ในการทำให้มันใช้ได้กับทุกสาขาในที่เก็บทั้งหมดที่บางคนไม่ได้รันโดยไม่มี--global
ตัวเลือก (การตั้งค่าท้องถิ่นแทนที่ทั่วโลก) ให้รันสิ่งนี้:
git config --global --add merge.ff false
จากเอกสาร :
merge.ff
โดยค่าเริ่มต้น git จะไม่สร้างการรวมพิเศษเมื่อทำการรวมการคอมมิทที่เป็นการสืบทอดของการคอมมิทปัจจุบัน แต่เคล็ดลับของสาขาปัจจุบันจะถูกส่งต่ออย่างรวดเร็ว เมื่อตั้งค่าเป็นเท็จตัวแปรนี้จะบอกให้คอมไพล์สร้างคอมมิวนิตี้การรวมแบบพิเศษในกรณีดังกล่าว (เทียบเท่ากับการให้--no-ff
ตัวเลือกจากบรรทัดคำสั่ง) เมื่อตั้งค่าเป็นเท่านั้นอนุญาตให้มีการรวมอย่างรวดเร็วไปข้างหน้า (เทียบเท่ากับการให้--ff-only
ตัวเลือกจากบรรทัดคำสั่ง)
merge.ff
เปิดตัวใน Git 1.7.6 มันไม่มีประสิทธิภาพในรุ่นที่เก่ากว่า
puff = "pull --ff --ff-only"
การอ่านชุดคำตอบฉันลงเอยด้วยการใช้สองตัวเลือกต่อไปนี้
git config --global pull.ff only # Disallows non ff merges on pull. Overrides merge.ff when pulling
git config --global merge.ff false # even create extra merge commit when fast forward merge would be possible
เฉพาะที่เกี่ยวข้องอย่างหลวม ๆ ฉันได้พบการตั้งค่านี้เพื่อหลีกเลี่ยงปัญหาระหว่างการดึง
git config --global pull.rebase true # set up pull to rebase instead of merge
merge
เวลาตลอดเวลาสำหรับสาขาเมื่อยังไม่ได้ทำการผูกมัดรีโมทเพื่อส่งต่ออย่างรวดเร็ว ดูเหมือนจะเป็นวิธีที่ง่ายและปลอดภัยที่สุดในการทำเช่นนี้ ฉันอยากรู้คุณเห็นได้ชัดว่ามีกรณีใช้ ทำไมคุณต้องการสร้างการรวมที่ไม่มีด้านใดด้านหนึ่งของสาขา