Lebih
git: patch tidak berlaku
Saya memiliki sebuah patch yang disebut my_pcc_branch.patch.
Ketika saya mencoba untuk menerapkan itu, saya mendapatkan pesan berikut:
$ git apply --check my_pcc_branch.patch
warning: src/main/java/.../AbstractedPanel.java has type 100644, expected 100755
error: patch failed: src/main/java/.../AbstractedPanel.java:13
error: src/main/java/.../AbstractedPanel.java: patch does not apply
Apa artinya?
Bagaimana saya bisa memperbaiki ini masalah?
240
8
Johannes Sixt dari msysgit@googlegroups.com mailing list disarankan menggunakan berikut argumen baris perintah:
Ini memecahkan masalah saya.
git menerapkan --menolak --spasi=memperbaiki mychanges.patch
bekerja untuk saya.Ketika semuanya gagal, cobalah
git menerapkan
's--3way
option.git menerapkan --3way patchFile.patch
Khas gagal berlaku sebanyak patch seperti itu, dan meninggalkan anda dengan konflik untuk bekerja di git namun biasanya anda melakukannya. Mungkin satu langkah lebih mudah daripada yang
menolak
alternatif.Perintah ini akan menerapkan patch tidak menyelesaikan itu meninggalkan bad file
*.rej
:Anda hanya harus mengatasi mereka. Setelah diselesaikan run:
Hal ini terjadi ketika anda mencampur UNIX dan Windows git klien karena Windows doesn't benar-benar memiliki konsep "x" sedikit sehingga anda checkout dari
rw-r--r--
(0644) file di Windows adalah "promosi" oleh msys POSIX layer menjadirwx-r-xr-x
(0755). git menganggap bahwa mode perbedaan pada dasarnya sama seperti tekstual perbedaan dalam file, sehingga anda patch tidak langsung berlaku. Saya pikir satu-satunya pilihan yang baik di sini adalah untuk mengaturinti.filemode
menjadifalse
(menggunakan git-config`).Berikut ini's msysgit masalah dengan beberapa info terkait: http://code.google.com/p/msysgit/issues/detail?id=164 (dialihkan untuk arsip.org's 3 Dec 2013 copy)
Coba gunakan solusi yang disarankan berikut ini: https://www.drupal.org/node/1129120
patch -p1 < contoh.patch
Ini membantu saya .
Dalam kasus saya, saya cukup bodoh untuk membuat patch file yang salah di tempat pertama, benar-benar diff-ing dengan cara yang salah. Aku berakhir dengan sama persis pesan kesalahan.
Jika anda'kembali pada master dan melakukan
git diff cabang-nama > cabang-nama.patch
, ini mencoba untuk menghapus semua penambahan yang anda inginkan terjadi dan sebaliknya (yang tidak mungkin untuk git untuk mencapai karena, jelas, tidak pernah dilakukan penambahan tidak dapat dihapus).Jadi pastikan anda checkout ke cabang anda dan jalankan
git diff guru > cabang-nama.patch
Saya telah menemukan link ini
Aku tidak tahu mengapa ini bekerja tapi saya mencoba banyak pekerjaan arounds dan ini adalah hanya salah satu yang bekerja untuk saya. Singkatnya, menjalankan tiga perintah di bawah ini: