it-swarm-id.com

git mergetool melaporkan "Tidak perlu file digabung"

Untuk beberapa alasan belakangan ini, setiap kali saya menarik dan mendapatkan konflik gabungan, menjalankan git mergetool melaporkan "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 menjalankan git rebase --abort dan menarik lagi, hal yang sama terjadi pada konflik yang berbeda, atau tarik berhasil tanpa konflik gabungan. Tidak ada perubahan jarak jauh di antara tarikan ini, sehingga konflik seolah-olah tidak hilang.

Berikut cara konfigurasi cabang dan remote ini:

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

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

git config --global core.trustctime false
17

Solusi sepele

yang bekerja untuk saya: Git membuat beberapa file terkait penggabungan di direktori yang sama di mana file yang konflik, jadi ingatlah untuk menjalankan git mergetool di jalur yang benar.

12
IProblemFactory

Ini memperbaikinya untuk saya:
git mergetool .

Saya menemukan perbaikan ini di sini

9
Josh

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 (perayap sistem file dan beberapa sistem cadangan). dan core.trustctime benar secara default.

Solusi 2: hanya:

$git rebase --skip

Tidak apa-apa bagi Anda untuk melewatkannya

5
lijinma

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

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

0
TrueWill

Alat gabungan lebih baik dalam menyelesaikan konflik daripada stock git. Tidak bisa terlalu keras kepala. Misalnya Beyond Compare sadar akan sintaks dan akan melakukan banyak hal untuk Anda. Jika sudah dikonfigurasi dengan benar, Anda bisa mengkompilasi dan menjalankan solusi Anda untuk menguji. Jika semuanya baik, maka cukup git add -A dan git rebase --continue. Apa yang Anda alami adalah normal. Periksa 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
Adam Dymitruk