git diff
Müşterim git git olmadan oluşturulan yamayı nasıl uygulayabilir ? patch
Komutu kullanmayı denedim ama her zaman dosya adını yama istiyor.
patch
bu biçimi tam olarak desteklemez.
git diff
Müşterim git git olmadan oluşturulan yamayı nasıl uygulayabilir ? patch
Komutu kullanmayı denedim ama her zaman dosya adını yama istiyor.
patch
bu 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 patchfile
dosya ekler, siler ve yeniden adlandırır işlemek gerekiyorsa.
EDIT Aralık 2015
patch
Komutun 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ü patch
kullandığı git
takdirde, farkını bir yama olarak uygulayabilmek için kullanmaya gerek yoktur .
git diff > patchfile
, amapatch -p1 < patchfile
relative
seçeneği kullanabilirsiniz :git diff --no-prefix --relative=my/relative/path > patchfile
patch -p1 < patchfile
git'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 < patchfile
veyagit 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 apply
dosya git diff
biçiminde tanımlanırlarsa dosya ekleme, silme ve yeniden adlandırma işlemlerini patch
de gerçekleştirir. Son olarak, git apply
ya 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 apply
bunu yapmanın en iyi yoludur, ancak bu soru özellikle yamanın Git yüklü olmadan nasıl uygulanacağını sormaktadır .
--dry-run --verbose
Varsa 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.