Bagaimana cara saya membuat patch dari komit git terbaru saya?

186

Saya mencari perintah ajaib untuk membuat tambalan dari komit terakhir yang dibuat.

Alur kerja saya terkadang terlihat seperti ini

vi some.txt
git add some.txt
git commit -m "some change"

dan sekarang saya hanya ingin menulis

git create-patch-from-last-commit-to-file SOME-PATCH0001.patch

tapi apa yang harus saya letakkan di sana create-patch-from-last-commit-to-file?

Claj
sumber

Jawaban:

297

Secara umum,

git format-patch -n HEAD^

(periksa bantuan untuk banyak opsi), meskipun sebenarnya untuk mengirimnya. Untuk satu komit saja

git show HEAD > some-patch0001.patch

akan memberi Anda tambalan yang bisa digunakan.

Tak berguna
sumber
18
berhati-hatilah dengan "git show HEAD> some-patch0001.patch", jika itu disebut terminal berwarna, dups juga menyalin urutan pelarian warna ke dalam file.
hrach
12
Anda juga bisa menggunakan git diff > change.patch. Anda juga bisa menyertakan rentang revisi dan memungkinkan Anda membuat tambalan untuk perubahan yang tidak dikomit. Perbedaan besar, bagaimanapun, adalah bahwa ia tidak akan memasukkan perbedaan dalam file biner . Lihat jawaban untuk Apa perbedaan antara 'git format-patch' dan 'git diff'? untuk lebih detail.
Rangi Keen
4
@hach tidak di Linux tidak
Robin Green
4
Tidak, karena bukan itu yang dikatakan baris pertama. Entah git format-patch -1atau git format-patch -n HEAD^harus bekerja.
berguna
4
Terima kasih, saya tidak mengerti bahwa itu benar-benar huruf 'n', saya pikir itu adalah penampung (format-patch memiliki opsi '-n' dan '- <n>').
Étienne
60

Mengambil dari jawaban @ Unseless, Anda juga dapat menggunakan formulir umum tanpa parameter untuk komit terakhir dan memasukkannya ke dalam file dengan:

git format-patch HEAD^ --stdout > patchfile.patch

Atau, menjadi lebih bersih untuk pengguna windows ketika carets harus diloloskan dengan menggandakannya:

git format-patch HEAD~1 --stdout > patchfile.patch
a1an
sumber
2
Bekerja untuk saya - terima kasih. Jika Anda kebetulan menggunakan Windows dan Git, Anda harus melarikan diri dari wortel (saya tahu keji): "git format-patch HEAD ^^ --stdout> patchfile.patch"
Steve Midgley
3
Untuk menghindari masalah Windows karena harus keluar dari tanda sisipan itu (yang membuatnya terlihat seperti perintah git yang valid berbeda), Anda dapat menggunakan alternatif git format-patch HEAD~1. Saya pikir itu menjadi kurang membingungkan pada Windows.
Michael Burr
30

cara lain, jika memiliki id komit dari komit tertentu, Anda dapat menggunakan,

git format-patch -1 {commit-id}
Vijay C
sumber
9

Anda memerlukan -popsi untuk mendapatkan log:

git log -1 -p --pretty='%b'
Brandan
sumber
Gunakan yang ini jika Anda tidak peduli dengan email dari / date / subject lines di awal file.
Ryan H.
5
git format-patch -1

Apakah pekerjaan untuk saya.

Katu
sumber