Pertanyaan git mergetool melaporkan "Tidak ada file yang perlu digabung"


Untuk beberapa alasan belakangan ini, setiap kali saya menarik dan mendapatkan konflik gabungan, jalankan git mergetool laporan "Tidak ada file yang perlu digabung":

$ git pull
First, rewinding head to replay your work on top of it...
Applying: replaced home button with Cancel
Using index info to reconstruct a base tree...
Falling back to patching base and 3-way merge...
error: Your local changes to the following files would be overwritten by merge:
    Classes/Controllers/HomeController.m
Please, commit your changes or stash them before you can merge.
Aborting
Failed to merge in the changes.
Patch failed at 0002 moved rollback into cancel button in log watching

When you have resolved this problem run "git rebase --continue".
If you would prefer to skip this patch, instead run "git rebase --skip".
To check out the original branch and stop rebasing run "git rebase --abort".

$ git mergetool
No files need merging

Jika saya jalankan git rebase --abort dan tarik lagi, baik hal yang sama terjadi pada konflik yang berbeda, atau tarikan berhasil tanpa konflik gabung. Tidak ada perubahan jarak jauh di antara tarikan ini, jadi bukan seolah-olah konflik itu pergi.

Beginilah cara cabang dan pengaturan jarak jauh ini dikonfigurasi:

[branch "develop"]
        remote = origin
        merge = refs/heads/develop
        rebase = true
[remote "origin"]
        url = <my repo url>
        fetch = +refs/heads/*:refs/remotes/origin/*

32
2017-10-21 19:56


asal


Jawaban:


Sepertinya masalah saya ada hubungannya dengan cap waktu file. Terimakasih untuk jawaban SO ini disarankan oleh Mark Longair, pengaturan berikut memperbaikinya untuk saya:

git config --global core.trustctime false

16
2017-10-28 22:06



Larutan sepele 

yang berhasil untuk saya: Git membuat beberapa file terkait gabungan di direktori yang sama dengan file yang konflik, jadi ingatlah untuk menjalankannya git mergetool di jalur yang benar.


10
2017-11-28 15:52



Solusi 1:

$git config --global core.trustctime false

Jika salah, perbedaan waktu antara indeks dan copy pekerjaan diabaikan; berguna ketika waktu perubahan inode secara teratur dimodifikasi oleh sesuatu di luar Git (file system crawler dan beberapa sistem cadangan). dan core.trustctime benar secara default.

Solusi 2: hanya:

$git rebase --skip

Tidak apa-apa bagi Anda untuk melewati itu


5
2017-09-27 04:43



Ini memperbaikinya untuk saya:
git mergetool . 

Saya menemukan perbaikan ini sini


5
2018-03-20 22:35



Alat penggabungan lebih baik dalam menyelesaikan konflik daripada stok git. Itu tidak bisa terlalu keras kepala. Sebagai contoh Beyond Compare adalah sintaks yang sadar dan akan melakukan banyak hal untuk Anda. Jika Anda sudah dikonfigurasi dengan benar, Anda bisa mengkompilasi dan menjalankan solusi Anda untuk menguji. Jika semuanya baik, maka itu saja git add -A dan git rebase --continue. Apa yang Anda alami adalah normal. Periksa kembali pengaturan "trust mergetool exit code" Anda:

git config --global mergetool.trustExitCode true

Catatan: opsi -A di git add akan menampilkan semua perubahan termasuk penghapusan dan file baru, yang tidak terlacak.


0
2017-10-21 20:39



Dalam kasus saya, masalahnya adalah saya membuka jendela konsol lain dan menjalankan aplikasi (berdasarkan pada aplikasi buat-reaksi, dengan reload panas) di jendela itu.

Membunuh proses dan menutup jendela lain, lalu membatalkan rebase dan mencoba lagi bekerja untuk saya.


0
2017-12-12 15:29