git diffMüşterim git git olmadan oluşturulan yamayı nasıl uygulayabilir ? patchKomutu kullanmayı denedim ama her zaman dosya adını yama istiyor.
patchbu biçimi tam olarak desteklemez.
git diffMüşterim git git olmadan oluşturulan yamayı nasıl uygulayabilir ? patchKomutu kullanmayı denedim ama her zaman dosya adını yama istiyor.
patchbu biçimi tam olarak desteklemez.
Yanıtlar:
git diff > patchfile
ve
patch -p1 < patchfile
iş ama yorumlarda ve diğer cevaplarda fark birçok kişi yama anlamıyor anlamıyor, siler ve yeniden adlandırır. Seçenek yok ama git apply patchfiledosya ekler, siler ve yeniden adlandırır işlemek gerekiyorsa.
EDIT Aralık 2015
patchKomutun en son sürümleri (2.7, Eylül 2012'de piyasaya sürüldü) , "diff --git" biçiminin, yeniden adlandırma ve kopyalar, izin değişiklikleri ve symlink diffs (ancak henüz ikili değil) dahil birçok özelliğini destekler ( sürüm duyurusu ).
Bu nedenle, mevcut / en son sürümünü patchkullandığı gittakdirde, farkını bir yama olarak uygulayabilmek için kullanmaya gerek yoktur .
git diff > patchfile, amapatch -p1 < patchfile
relativeseçeneği kullanabilirsiniz :git diff --no-prefix --relative=my/relative/path > patchfile
patch -p1 < patchfilegit'in yüklü olmasını gerektirmez. İlk komut diff oluşturma, onu uygulama komutunu gösterir.
git diff from_branch > patchfile; git checkout from_branch; git patch -p1 < patchfileveyagit diff from_branch to_branch > patchfile; ...
kullanım
git apply patchfile
Eğer mümkünse.
patch -p1 < patchfile
potansiyel yan etkisi vardır.
git applydosya git diffbiçiminde tanımlanırlarsa dosya ekleme, silme ve yeniden adlandırma işlemlerini patchde gerçekleştirir. Son olarak, git applyya her şeyin uygulandığı ya da hiçbir şeyin olmadığı bir "tümünü uygula ya da hepsini iptal et" modeli, yama ise yama dosyalarını kısmen uygulayarak çalışma dizininizi tuhaf bir durumda bırakabilir.
git applybunu yapmanın en iyi yoludur, ancak bu soru özellikle yamanın Git yüklü olmadan nasıl uygulanacağını sormaktadır .
--dry-run --verboseVarsa yan etkilerin ne olacağını belirlemek için seçenekler yararlıdır. (v2.5.8 yamasını kullanarak)
git apply patchfile -... tek aklı başında cevap ..." - neredeyse gülünç. OpenSSL geliştiricileri test etmem için bana bir yama gönderdiğinde Git uygulayamaz. Budur her zaman. Henüz aptal aracın bir yama uyguladığını görmedim.
kullanırım
patch -p1 --merge < patchfile
Bu şekilde, çatışmalar her zamanki gibi çözülebilir.