Saya di jendela.
Untuk berbagai alasan kami memiliki beberapa contoh git dari cabang svn yang berbeda.
Sering kali saya ingin memperbaiki masalah di repositori A, membuat tambalan, dan menerapkannya ke repositori B. Ini berfungsi dengan baik kecuali jika ada konflik.
Saat melakukan rebasing, saya cukup mengklik kanan folder dan menggunakan tortioseGit dan memilih opsi penyelesaian. Ini menunjukkan cara yang bagus untuk membiarkan saya mengatasi konflik saya.
Apakah ada cara untuk melakukannya dengan potongan tambalan yang ditolak?
Berikut adalah pendekatan saya saat ini untuk membuat / menerapkan tambalan
git format-patch master --stdout > c:\\patch\\file.patch
git apply --reject --ignore-space-change --ignore-whitespace c:\\patch\\file.patch
git mergetool
dan melakukan penggabungan 3 arah dengan gui pilihan Anda (saya lebih memilih kdiff di windows) ...Jawaban:
Untuk membuat tambalan Anda, lakukan hal berikut:
Sekarang ketika Anda siap untuk menerapkan tambalan:
yang
-3
akan melakukan penggabungan tiga arah jika ada konflik. Pada titik ini Anda dapat melakukangit mergetool
jika Anda ingin pergi ke gui atau hanya secara manual menggabungkan file menggunakan vim (standar<<<<<<
,||||||
,>>>>>>
resolusi konflik).sumber
--ignore-whitespace --ignore-space-change
kegit am
juga. Saya memiliki penggabungan sepele yang tidak akan terjadi tanpanya.git apply -3 changes.patch
tampaknya bekerja untuk saya jugagit mergetool
. Sebaliknya saya harus menemukan basis komit patch asli yang digunakan, terapkan di atas itu (untungnya repo saya memiliki ini) dan kemudian rebase.git am -3
dan tidakgit apply -3
akan benar-benar menjatuhkan penanda konflik ke file saya, meskipun saya mendapatkan pesan sepertiApplied patch to 'configure.ac' with conflicts.
danerror: patch failed: ...
. Ini aktifgit 2.17.1
. Mungkin ketika beberapa file tidak dapat ditambal sama sekali, git berputar kembali?Jika Anda sering mengalami konflik yang sama saat menerapkan patch, rebasing, atau merging, Anda dapat menggunakan fungsi git rerere (menggunakan kembali resolusi yang direkam). Ini memungkinkan Anda untuk menentukan sebelumnya bagaimana konflik harus diselesaikan berdasarkan bagaimana Anda menyelesaikannya di masa lalu. Lihat http://git-scm.com/blog/2010/03/08/rerere.html untuk detail tentang cara kerjanya.
sumber
TortoiseGit memiliki fitur penggabungan yang bisa membuka file patch.
Ada fotonya di sini .
sumber
Pendekatan saya adalah:
sumber