Bagaimana cara klien saya menerapkan tambalan yang dibuat oleh git diff
tanpa git diinstal? Saya telah mencoba menggunakan patch
perintah tetapi selalu meminta nama file untuk ditambal.
patch
tidak sepenuhnya mendukung format ini.
Bagaimana cara klien saya menerapkan tambalan yang dibuat oleh git diff
tanpa git diinstal? Saya telah mencoba menggunakan patch
perintah tetapi selalu meminta nama file untuk ditambal.
patch
tidak sepenuhnya mendukung format ini.
Jawaban:
git diff > patchfile
dan
patch -p1 < patchfile
berfungsi tetapi karena banyak orang memperhatikan di komentar dan jawaban lainnya tidak mengerti tambalan, penghapusan dan penggantian nama. Tidak ada pilihan tetapi git apply patchfile
jika Anda perlu menangani penambahan file, hapus dan ganti nama.
EDIT Desember 2015
Versi terbaru dari patch
perintah (2.7, dirilis pada September 2012) mendukung sebagian besar fitur format "diff -git", termasuk penggantian nama dan salinan, perubahan izin, dan symlink diffs (tetapi belum binary diffs) ( pengumuman rilis ).
Jadi asalkan satu menggunakan versi saat ini / terbaru patch
tidak perlu menggunakan git
untuk dapat menerapkan diff sebagai patch.
git diff > patchfile
, tetapipatch -p1 < patchfile
relative
opsi seperti:git diff --no-prefix --relative=my/relative/path > patchfile
patch -p1 < patchfile
tidak memerlukan git diinstal. Perintah pertama menunjukkan perintah untuk menghasilkan diff, bukan menerapkannya.
git diff from_branch > patchfile; git checkout from_branch; git patch -p1 < patchfile
ataugit diff from_branch to_branch > patchfile; ...
Menggunakan
git apply patchfile
jika memungkinkan.
patch -p1 < patchfile
memiliki efek samping potensial.
git apply
juga menangani penambahan, penghapusan, dan penggantian nama file jika dijelaskan dalam git diff
format, yang patch
tidak akan dilakukan. Akhirnya, git apply
adalah model "terapkan semua atau batalkan semua" di mana segala sesuatu diterapkan atau tidak ada, sedangkan tambalan sebagian dapat menerapkan file tambalan, meninggalkan direktori kerja Anda dalam keadaan aneh.
git apply
adalah cara terbaik untuk melakukannya, tetapi pertanyaan ini secara khusus menanyakan bagaimana cara menerapkan tambalan tanpa menginstal Git .
--dry-run --verbose
berguna untuk menentukan apa efek sampingnya, jika ada. (menggunakan patch v2.5.8)
git apply patchfile -
... satu-satunya jawaban yang waras ..." - itu hampir menggelikan. Setiap kali para pengembang OpenSSL mengirimi saya sebuah tambalan untuk diuji, Git gagal menerapkannya. Itu setiap saat. Saya belum melihat bahwa alat bodoh menerapkan tambalan.
saya menggunakan
patch -p1 --merge < patchfile
Dengan cara ini, konflik dapat diselesaikan seperti biasa.