Saya perlu untuk menulis sebuah script yang membuat patch untuk daftar SHA1 melakukan nomor.
Saya mencoba menggunakan git format-patch
Apakah ada cara untuk menghasilkan patch hanya untuk spesifik SHA1?
Coba:
git format-patch -1 <sha>
atau
git format-patch -1 HEAD
Menurut dokumentasi link di atas, -1
bendera memberitahu git berapa banyak berbuat harus dimasukkan dalam patch;
-<n>
Mempersiapkan patch dari paling atas
melakukan.
Menerapkan patch dengan perintah:
git am < file.patch
Perintah ini (seperti yang disarankan oleh @Naftuli Tzvi Kay):
git format-patch -1 HEAD
Ganti KEPALA
dengan spesifik hash atau range.
akan menghasilkan file patch terbaru untuk melakukan diformat untuk menyerupai UNIX surat format.
-<n>
- Mempersiapkan patch dari paling atasmelakukan.
Kemudian anda bisa re-apply patch file di kotak pesan dengan format:
git am -3k 001*.patch
Lihat: man git-format-patch
.
Jika anda ingin memastikan (single komit) patch akan diterapkan di atas spesifik komit, anda dapat menggunakan git baru 2.9 (juni 2016) option format git-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 melakukan bb52995, melakukan 3de6651, melakukan fa2ab86, melakukan ded2c09 (26 April 2016) oleh Xiaolong Kamu (`).
(Digabung dengan Junio C Hamano -- gitster
-- di melakukan 72ce3ff, 23 Mei 2016)
format-patch
: tambahkan '--base
' pilihan untuk merekam dasar pohon info
Pengelola atau pihak ketiga penguji mungkin ingin mengetahui secara pasti dasar pohon patch series berlaku untuk. Mengajarkan git format-patch '
--base
' pilihan untuk merekam dasar pohon info dan menambahkan pada akhir pertama pesan (baik penutup surat atau patch pertama dalam seri).
dasar pohon info terdiri dari "dasar melakukan", yang terkenal komitmen itu merupakan bagian dari bagian yang stabil dari proyek sejarah orang yang lain bekerja off, dan nol atau lebih "prasyarat patch", yang terkenal patch dalam penerbangan yang belum menjadi bagian dari "dasar melakukan" yang perlu diterapkan di atas "dasar melakukan" dalam rangka topological sebelum patch dapat diterapkan.
"dasar melakukan" adalah ditampilkan sebagai "
dasar-komitmen:
" diikuti oleh 40-hex dari komit nama objek. "prasyarat patch" adalah ditampilkan sebagai "prasyarat-patch-id:
" diikuti oleh 40-hex "patch id", yang dapat diperoleh dengan melewati patch melalui "git patch-id-stabil
" perintah.
Git 2.23 (Q3 2019) akan meningkatkan itu, karena "--base
" pilihan "format-patch
" dihitung patch-id
untuk prasyarat patch yang tidak stabil, yang telah diperbarui untuk menghitung dengan cara yang kompatibel dengan "git patch-id-stabil
".
Lihat melakukan a8f6855, melakukan 6f93d26 (26 Apr 2019) oleh Stephen Boyd (akshayka
).
(Digabung dengan Junio C Hamano -- gitster
-- di melakukan 8202d12, 13 Jun 2019)
format-patch
: membuat--base patch-id
output stabil
Kami't flushing konteks setiap kali kita diproses cowok di
patch-id
generation code didiff.c
, tapi kami melakukan itu ketika kita dihasilkan "stabil" patch-id dengan 'patch-id
' alat.
Let's port yang mirip logika lebih dari
patch-id.c
menjadidiff.c
sehingga kita bisa mendapatkan hash yang sama ketika kita're menghasilkan patch-id 'format-patch-dasar=
' jenis perintah pemanggilan.
Sebelum Git 2.24 (Q4 2019), "git format-patch -o <outdir>" apa yang setara dengan "
mkdir
Lihat melakukan edefc31 (11 Oktober 2019) oleh Bert Wesarg (bertwesarg
).
(Digabung dengan Junio C Hamano -- gitster
-- di melakukan f1afbb0, 18 Oct 2019)
format-patch
: buat terkemuka komponen-komponen dari output directorySign-off-oleh: Bert Wesarg
'git format-patch -o
' apakah setara dengan 'mkdir ' tidak 'mkdir -p ', yang sedang diperbaiki.
Menghindari penggunaan '
adjust_shared_perm
' pada direktori yang mungkin memiliki implikasi keamanan. Dicapai dengan menonaktifkan sementara dari 'config.sharedRepository
' seperti 'git init
' tidak.
Apa adalah cara untuk menghasilkan patch hanya untuk spesifik SHA1?
It's cukup sederhana:
Opsi 1. git show commitID > myFile.patch
Opsi 2. git commitID~1..commitID > myFile.patch
Note: Ganti commitID
dengan sebenarnya komit id (SHA1 melakukan code).