En son git taahhüdümden nasıl bir yama oluştururum?


186

Yapılan son taahhütten bir yama yaratmanın sihirli komutunu arıyorum.

İş akışım bazen böyle görünüyor

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

ve şimdi sadece yazmak istiyorum

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

ama oraya ne koymak zorundayım create-patch-from-last-commit-to-file?



Yanıtlar:


297

Genel olarak,

git format-patch -n HEAD^

(birçok seçenek için yardıma bakın), ancak gerçekten postalamak için. Tek bir taahhüt için

git show HEAD > some-patch0001.patch

size kullanışlı bir yama verecektir.


18
"git show HEAD> some-patch0001.patch" ile dikkatli olun, eğer renkli terminalde çağrılırsa, kaçış dizilerini de dosyaya kopyalar.
hrach

12
Ayrıca kullanabilirsiniz git diff > change.patch. Bir düzeltme aralığı da ekleyebilirsiniz ve taahhüt edilmemiş değişiklikler için yamalar oluşturmanıza olanak tanır. Ancak en büyük fark, ikili dosyalardaki farklılıkları içermemesidir . Cevabını bakın 'git biçim-yama' ve diff 'arasındaki fark nedir? daha fazla ayrıntı için.
Rangi Keen

4
@hrach Linux'ta değil
Robin Green

4
Hayır, çünkü ilk satırın söylediği şey bu değil. Ya çalışmalı ya git format-patch -1da git format-patch -n HEAD^çalışmalı.
Yararsız

4
Teşekkürler, kelimenin tam anlamıyla 'n' harfi olduğunu anlamamıştım, bunun bir yer tutucu olduğunu düşündüm (biçim yamasının hem '-n' hem de '- <n>' seçenekleri var).
Étienne

60

@Useless yanıtından alarak, son formu için parametre olmadan genel formu da kullanabilir ve aşağıdakilerle bir dosyaya koyabilirsiniz:

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

Veya, araçların ikiye katlanmasıyla kaçması gerektiğinde Windows kullanıcıları için daha temiz olmak:

git format-patch HEAD~1 --stdout > patchfile.patch

2
Benim için çalıştı - teşekkürler. Windows ve Git'i kullanırsanız, havuçtan kaçmanız gerekir (iğrenç biliyorum): "git format-patch HEAD ^^ --stdout> patchfile.patch"
Steve Midgley

3
Windows'dan o caretten kaçmak zorunda kalmama problemini önlemek için (farklı bir geçerli git komutu gibi görünmesini sağlar) alternatifini kullanabilirsiniz git format-patch HEAD~1. Bunun Windows için daha az kafa karıştırıcı olduğunu düşünüyorum.
Michael Burr

30

başka bir yolla, söz konusu taahhüdün taahhüt kimliği varsa,

git format-patch -1 {commit-id}

9

-pGünlüğü git seçeneğine ihtiyacınız var :

git log -1 -p --pretty='%b'

Dosyanın başındaki / tarih / konu satırlarından gelen e-postalarla ilgilenmiyorsanız bunu kullanın.
Ryan

5
git format-patch -1

Benim için iş yapar.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.