Bagaimana cara klien saya menerapkan tambalan yang dibuat oleh git difftanpa git diinstal? Saya telah mencoba menggunakan patchperintah tetapi selalu meminta nama file untuk ditambal.
patchtidak sepenuhnya mendukung format ini.
Bagaimana cara klien saya menerapkan tambalan yang dibuat oleh git difftanpa git diinstal? Saya telah mencoba menggunakan patchperintah tetapi selalu meminta nama file untuk ditambal.
patchtidak 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 patchfilejika Anda perlu menangani penambahan file, hapus dan ganti nama.
EDIT Desember 2015
Versi terbaru dari patchperintah (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 patchtidak perlu menggunakan gituntuk dapat menerapkan diff sebagai patch.
git diff > patchfile, tetapipatch -p1 < patchfile
relativeopsi seperti:git diff --no-prefix --relative=my/relative/path > patchfile
patch -p1 < patchfiletidak memerlukan git diinstal. Perintah pertama menunjukkan perintah untuk menghasilkan diff, bukan menerapkannya.
git diff from_branch > patchfile; git checkout from_branch; git patch -p1 < patchfileataugit diff from_branch to_branch > patchfile; ...
Menggunakan
git apply patchfile
jika memungkinkan.
patch -p1 < patchfile
memiliki efek samping potensial.
git applyjuga menangani penambahan, penghapusan, dan penggantian nama file jika dijelaskan dalam git diffformat, yang patchtidak akan dilakukan. Akhirnya, git applyadalah 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 applyadalah cara terbaik untuk melakukannya, tetapi pertanyaan ini secara khusus menanyakan bagaimana cara menerapkan tambalan tanpa menginstal Git .
--dry-run --verboseberguna 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.