หากคุณต้องการให้แน่ใจว่าแพทช์ (คอมมิทเดียว) จะถูกนำไปใช้ด้านบนของคอมมิทเฉพาะคุณสามารถใช้ตัวเลือก 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
# ใช้โปรแกรมปะแก้ในที่สุด