Saya punya 2 git repositori lokal, keduanya menunjuk ke repositori jarak jauh yang sama.
Dalam satu repositori git, jika saya melakukannya git format-patch 1
, bagaimana saya bisa menerapkan tambalan itu ke repositori lain?
Saya punya 2 git repositori lokal, keduanya menunjuk ke repositori jarak jauh yang sama.
Dalam satu repositori git, jika saya melakukannya git format-patch 1
, bagaimana saya bisa menerapkan tambalan itu ke repositori lain?
Jawaban:
Catatan: Anda dapat terlebih dahulu melihat pratinjau yang akan dilakukan tambalan Anda:
Pertama-tama statistik:
git apply --stat a_file.patch
Kemudian jalankan kering untuk mendeteksi kesalahan:
git apply --check a_file.patch
Terakhir, Anda bisa menggunakan git am
untuk menerapkan tambalan sebagai komit: memungkinkan Anda untuk menambal tambalan yang diterapkan.
Ini bisa bermanfaat untuk referensi nanti.
git am --signoff < a_file.patch
Lihat contoh di artikel ini :
Di git log Anda, Anda akan menemukan bahwa pesan komit berisi tag "Signed-off-by". Tag ini akan dibaca oleh Github dan yang lainnya untuk memberikan info berguna tentang bagaimana komit berakhir di kode.
git am < somepatch.patch
menghasilkan "fatal: nama identitas kosong (untuk <>) tidak diizinkan". Adakah yang bisa menjelaskan kepada saya mengapa?
Author
tajuk buruk di tambalan, dan / atau Anda tidak git config user.{name,email}
.
git apply --check
mengatakan patch does not apply
, dan git apply -3
mengatakan repository lacks the necessary blob to fall back on 3-way merge.
In git, rebitting commit sangat mudah; tetapi bagaimana orang rebase patch mereka di atas kode yang diperbarui?
git apply name-of-file.patch
Atau, jika Anda menendang sekolah lama:
cd /path/to/other/repository
patch -p1 < 0001-whatever.patch
Pertama, Anda harus mencatat tentang perbedaan antara git am
dangit apply
Ketika Anda menggunakan git am
Anda biasanya ingin menerapkan banyak tambalan. Jadi harus menggunakan:
git am *.patch
atau hanya:
git am
Git akan menemukan tambalan secara otomatis dan menerapkannya dalam urutan ;-)
UPD
Di sini Anda dapat menemukan cara membuat tambalan tersebut
git apply
.. dan di --reverse
:-) 👍
Jika Anda ingin menerapkannya sebagai komit , gunakan git .
Jika Anda menggunakan JetBrains IDE (seperti IntelliJ IDEA, Android Studio, PyCharm), Anda dapat menyeret file patch dan meletakkannya di dalam IDE, dan sebuah dialog akan muncul, menampilkan konten patch. Yang harus Anda lakukan sekarang adalah mengklik "Terapkan tambalan", dan sebuah komit akan dibuat.
Anda dapat menggunakan cmd yang disebutkan di bawah
git apply fileName.patch