Git отчеты mergetool "Нет необходимости в слиянии файлов" - программирование

Git отчеты mergetool "Нет необходимости в слиянии файлов"

По какой-то причине в последнее время каждый раз, когда я вытягиваю и получаю конфликт слиянием, запуская git mergetool отчеты "Нет файлов, нужно слить":

$ 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

Если я запустил git rebase --abort и снова вытащил, то одно и то же происходит в другом конфликте, или притяжение преуспевает без конфликта слияния. Нет никаких удаленных изменений между этими тягами, так что это не так, как будто конфликт ушел.

Здесь конфигурация этой ветки и удаленного устройства:

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

Ответ 1

Похоже, что моя проблема связана с временными метками файла. Благодаря this SO answer, предложенному Марком Лонгером, следующий параметр зафиксировал это для меня:

git config --global core.trustctime false

Ответ 2

Тривиальное решение

который работал на меня: Git создает некоторые файлы, связанные с слиянием, в том же каталоге, где находится конфликтный файл, поэтому не забудьте запустить git mergetool в правильном пути.

Ответ 3

Это исправило это для меня:
git mergetool.

Я нашел это исправление здесь

Ответ 4

Решение 1:

$git config --global core.trustctime false

Если false, различия в ctime между индексом и рабочей копией игнорируются; полезно, когда время изменения inode регулярно изменяется чем-то вне Git (сканеры файловой системы и некоторые системы резервного копирования). и по умолчанию значение core.trustctime истинно.

Решение 2: просто:

$git rebase --skip

Это нормально, если вы пропустите его

Ответ 5

Инструменты слияния лучше подходят для разрешения конфликтов, чем акции git. Это не может быть слишком самоуверенным. Например, Beyond Compare поддерживает синтаксис и многое сделает для вас. Если вы настроили его правильно, вы можете просто скомпилировать и запустить свое решение для тестирования. Если все это хорошо, то просто git add -A и git rebase --continue. То, что вы испытываете, является нормальным. Дважды проверьте свой код "trust mergetool exit code":

git config --global mergetool.trustExitCode true

Примечание. Параметр -A в git add будет выполнять все изменения, включая удаления и новые, не проверенные файлы.

Ответ 6

В моем случае проблема заключалась в том, что я открыл другое окно консоли и запускал приложение (основанное на создании-реагировании-приложении с горячей перезагрузкой) в этом окне.

Убив процесс и закрыв другое окно, вы отменили перезагрузку и повторную попытку.

Ответ 7

Может быть, вы должны сначала запустить слияние? Затем, если есть конфликты слияния для разрешения, вы можете запустить mergetool. Но до тех пор, пока не будут созданы результаты неполного слияния, я думаю, что mergetool просто сообщит, что слить нечего.