Jika Anda ingin memastikan tambalan (komit tunggal) akan diterapkan di atas komit tertentu, Anda dapat menggunakan opsi git 2.9 (Juni 2016) yang baru 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
Lihat komit bb52995 , komit 3de6651 , komit fa2ab86 , komit ded2c09 (26 Apr 2016) oleh Xiaolong Ye (``) .
(Digabung oleh Junio C Hamano - gitster
- dalam commit 72ce3ff , 23 Mei 2016)
format-patch
: tambahkan --base
opsi ' ' untuk merekam info struktur dasar
Maintainers atau penguji pihak ketiga mungkin ingin tahu pohon dasar yang tepat dari seri tambalan berlaku. Ajarkan git format-patch a ' --base
' opsi untuk merekam info pohon dasar dan menambahkannya di akhir pesan pertama (baik surat pengantar atau patch pertama dalam seri).
Info pangkalan pohon terdiri dari "komit dasar", yang merupakan komit terkenal yang merupakan bagian dari bagian stabil dari sejarah proyek yang digunakan semua orang, dan nol atau lebih "patch prasyarat", yang terkenal tambalan dalam penerbangan yang belum menjadi bagian dari "komit dasar" yang perlu diterapkan di atas "komit dasar" dalam urutan topologi sebelum patch dapat diterapkan.
"Komit dasar" ditampilkan sebagai " base-commit:
" diikuti oleh 40-hex dari nama objek komit.
"Tambalan prasyarat" ditampilkan sebagai " prerequisite-patch-id:
" diikuti oleh "tambalan patch" hex-hex, yang dapat diperoleh dengan melewati tambalan melalui perintah " git patch-id --stable
".
Git 2.23 (Q3 2019) akan meningkatkan itu, karena " --base
" opsi " format-patch
" menghitung patch-ids
tambalan untuk prasyarat dengan cara yang tidak stabil, yang telah diperbarui untuk menghitung dengan cara yang kompatibel dengan " git patch-id --stable
".
Lihat komit a8f6855 , komit 6f93d26 (26 Apr 2019) oleh Stephen Boyd ( akshayka
) .
(Digabung oleh Junio C Hamano - gitster
- dalam komit 8202d12 , 13 Jun 2019)
format-patch
: membuat --base patch-id
output stabil
Kami tidak menyiram konteks setiap kali kami memproses hunk dalam
patch-id
kode generasi diff.c
, tetapi kami melakukan itu ketika kami membuat patch-id yang "stabil" dengan alat ' patch-id
'.
Pelabuhan Mari bahwa logika yang sama lebih dari patch-id.c
ke diff.c
sehingga kita bisa mendapatkan hash yang sama ketika kita menghasilkan patch-id untuk ' format-patch --base=
' jenis doa perintah.
Sebelum Git 2.24 (Q4 2019), " git format-patch -o <outdir>
" melakukan yang setara dengan " mkdir <outdir>
" tidak " mkdir -p <outdir>
", yang sedang diperbaiki.
Lihat komit edefc31 (11 Okt 2019) oleh Bert Wesarg ( bertwesarg
) .
(Digabung oleh Junio C Hamano - gitster
- di commit f1afbb0 , 18 Okt 2019)
format-patch
: membuat komponen utama direktori keluaran
Ditandatangani oleh: Bert Wesarg
'git format-patch -o' melakukan yang setara dengan 'mkdir' bukan 'mkdir -p', yang sedang diperbaiki.
Hindari penggunaan ' adjust_shared_perm
' pada direktori terkemuka yang mungkin memiliki implikasi keamanan. Dicapai dengan menonaktifkan sementara ' config.sharedRepository
' seperti ' git init
' tidak.
Dengan Git 2.25 (Q1 2020), " git rebase
" tidak berfungsi dengan baik ketika format.useAutoBase
variabel konfigurasi diatur, yang telah diperbaiki.
Lihat komit cae0bc0 , komit 945dc55 , komit 700e006 , komit a749d01 , komit 0c47e06 (04 Des 2019) oleh Denton Liu ( Denton-L
) .
(Digabung oleh Junio C Hamano - gitster
- dalam komit 71a7de7 , 16 Des 2019)
rebase
: memperbaiki format.useAutoBase
kerusakan
Dilaporkan oleh: Christian Biesinger
Ditandatangani oleh: Denton Liu
Dengan format.useAutoBase = true
, menjalankan rebase menghasilkan kesalahan:
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.
Perbaiki ini dengan selalu meneruskan --no-base
ke format-patch dari rebase sehingga efek format.useAutoBase
dinegasikan.
git apply --stat file.patch
# tampilkan statistik.git apply --check file.patch
# periksa kesalahan sebelum mendaftar.git am < file.patch
akhirnya terapkan tambalan.