หากคุณต้องการให้แน่ใจว่าแพทช์ (คอมมิทเดียว) จะถูกนำไปใช้ด้านบนของคอมมิทเฉพาะคุณสามารถใช้ตัวเลือก git 2.9 (มิถุนายน 2016) ใหม่ git format-patch --base
git format-patch --base=COMMIT_VALUE~ -M -C COMMIT_VALUE~..COMMIT_VALUE
# or
git format-patch --base=auto -M -C COMMIT_VALUE~..COMMIT_VALUE
# or
git config format.useAutoBase true
git format-patch -M -C COMMIT_VALUE~..COMMIT_VALUE
ดูกระทำ bb52995 , กระทำ 3de6651 , กระทำ fa2ab86 , กระทำ ded2c09 (26 เมษายน 2016) โดยXiaolong Ye ( ``)
(ผสานโดยJunio C Hamano - gitster-ในการกระทำ 72ce3ff , 23 พฤษภาคม 2016)
format-patch: เพิ่ม--baseตัวเลือก '' เพื่อบันทึกข้อมูลทรีฐาน
ผู้ดูแลหรือผู้ทดสอบบุคคลที่สามอาจต้องการทราบแผนผังฐานที่แน่นอนที่ใช้กับชุดข้อมูลแก้ไข สอน git format-patch a '--base ' ตัวเลือกเพื่อบันทึกข้อมูลทรีฐานและต่อท้ายข้อความแรก (ทั้งจดหมายปะหน้าหรือแพทช์แรกในซีรีส์)
ข้อมูลทรีฐานประกอบด้วย "การกระทำฐาน" ซึ่งเป็นที่รู้จักกันดีว่าเป็นส่วนหนึ่งของส่วนที่มีเสถียรภาพของประวัติศาสตร์โครงการทุกคนทำงานออกมาและเป็นศูนย์หรือมากกว่า "แพทช์เบื้องต้น" ซึ่งเป็นที่รู้จักกันดี แพทช์ในเที่ยวบินที่ยังไม่ได้เป็นส่วนหนึ่งของ "ฐานกระทำ" ที่จำเป็นต้องนำมาใช้ด้านบนของ "ฐานกระทำ" ตามลำดับทอพอโลยีก่อนที่จะนำไปใช้เป็นหย่อม ๆ
"การกระทำพื้นฐาน" แสดงเป็น " base-commit:" ตามด้วยฐานสิบหก 40 ของชื่อวัตถุกระทำ
"prerequisite patch" แสดงเป็น " prerequisite-patch-id:" แล้วตามด้วย 40-hex "patch id" ซึ่งสามารถรับได้โดยผ่าน patch ผ่านgit patch-id --stableคำสั่ง ""
Git 2.23 (ไตรมาสที่ 3 ปี 2019) จะปรับปรุงให้ดีขึ้นเพราะ--baseตัวเลือก "" ของ " format-patch" คำนวณpatch-idsสำหรับแพตช์ที่จำเป็นต้องมีก่อนในแบบที่ไม่เสถียรซึ่งได้รับการปรับปรุงเพื่อคำนวณในแบบที่เข้ากันได้กับ " git patch-id --stable"
ดูกระทำ a8f6855 , กระทำ 6f93d26 (26 เมษายน 2019) โดยสตีเฟ่นบอยด์ (akshayka )
(ผสานโดยJunio C Hamano -gitster -ในการส่ง 8202d12 , 13 Jun 2019)
format-patch: ทำให้--base patch-idผลผลิตมีเสถียรภาพ
เราไม่ได้ล้างข้อมูลบริบททุกครั้งที่เราประมวลผลก้อนใหญ่ใน
patch-idรหัสการสร้างในdiff.cแต่เราก็ทำอย่างนั้นเมื่อเราสร้าง patch-id "เสถียร" ด้วยpatch-idเครื่องมือ ''
พอร์ต Let 's ตรรกะที่คล้ายกันจากการpatch-id.cเข้าdiff.cเพื่อที่เราจะได้แฮชเดียวกันเมื่อเราสร้าง patch-ids สำหรับformat-patch --base=การเรียกใช้คำสั่งชนิด ''
ก่อน Git 2.24 (Q4 2019) "git format-patch -o <outdir> " ทำหน้าที่เทียบเท่า " mkdir <outdir>" ไม่ใช่ "mkdir -p <outdir> " ซึ่งกำลังแก้ไข
ดูกระทำ edefc31 (11 ตุลาคม 2019) โดยเบิร์ต Wesarg (bertwesarg )
(ผสานโดยJunio C Hamano - gitster- in f1afbb0 , 18 ต.ค. 2019)
format-patch: สร้างองค์ประกอบชั้นนำของไดเรกทอรีออก
ลงชื่อออกโดย: Bert Wesarg
'git format-patch -o' เทียบเท่ากับ 'mkdir' ไม่ใช่ 'mkdir -p' ซึ่งกำลังแก้ไขอยู่
หลีกเลี่ยงการใช้ ' adjust_shared_perm' ในไดเรกทอรีชั้นนำซึ่งอาจมีผลกระทบด้านความปลอดภัย ทำได้โดยการปิดการใช้งาน ' config.sharedRepository' like ' git init' เป็นการชั่วคราว
ด้วย Git 2.25 (ไตรมาสที่ 1 ปี 2020) " git rebase" ทำงานได้ไม่ดีเมื่อformat.useAutoBaseตั้งค่าตัวแปรการตั้งค่าซึ่งได้รับการแก้ไขแล้ว
ดูกระทำ cae0bc0 , กระทำ 945dc55 , กระทำ 700e006 , กระทำ a749d01 , กระทำ 0c47e06 (4 ธันวาคม 2019) โดยDenton หลิว (Denton-L )
(ผสานโดยJunio C Hamano - gitster-ในการคอมมิชชัน 71a7de7 , 16 Dec 2019)
rebase: แก้ไขปัญหาformat.useAutoBaseการแตก
รายงานโดย: Christian Biesinger
ลงชื่อออกโดย: Denton Liu
ด้วยการformat.useAutoBase = trueใช้การรีบูตทำให้เกิดข้อผิดพลาด:
fatal: failed to get upstream, if you want to record base commit automatically,
please use git branch --set-upstream-to to track a remote branch.
Or you could specify base commit by --base=<base-commit-id> manually
error:
git encountered an error while preparing the patches to replay
these revisions:
ede2467cdedc63784887b587a61c36b7850ebfac..d8f581194799ae29bf5fa72a98cbae98a1198b12
As a result, git cannot rebase them.
แก้ไขสิ่งนี้โดยส่งผ่าน--no-baseไปยัง format-patch จาก rebase เสมอเพื่อให้เอฟเฟกต์format.useAutoBaseถูกทำให้เป็นโมฆะ
git apply --stat file.patch# show statsgit apply --check file.patch# ตรวจสอบข้อผิดพลาดก่อนใช้git am < file.patch# ใช้โปรแกรมปะแก้ในที่สุด