Git rebase не работает: «Ваши локальные изменения в следующих файлах будут перезаписаны слиянием». Никаких локальных изменений?

104

Вот моя стенограмма попытки слить мою ветку исправления ошибок с моей основной веткой при подготовке к продвижению ее вверх по течению. С момента создания ветки с исправлением ошибок в мастер были внесены некоторые изменения в восходящем направлении, и теперь он отказывается от перебазирования.

Файлы, в которых возникают ошибки, при открытии не различаются. файлы не были добавлены, удалены или переименованы. Ничего не игнорируется, и ничто не остается неотслеживаемым, постановочным или неустановленным. Я полностью озадачен, почему перебазирование не работает.

Я использую OS X 10.6.6 и git 1.7.4

.-(/Volumes/joshua/www/txfunds)-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------(joshua@Kusanagi)-
`--> git rebase bug586-test master-test
First, rewinding head to replay your work on top of it...
Applying: - comiitting code related to api permissions
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:
    inc/data.inc
    templates/apipermissions_tpl.inc
    templates/currencies_tpl.inc
Please, commit your changes or stash them before you can merge.
Aborting
Failed to merge in the changes.
Patch failed at 0001 - comiitting code related to api permissions

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



.-(/Volumes/joshua/www/txfunds)-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------(joshua@Kusanagi)-
`--> git status
# Not currently on any branch.
nothing to commit (working directory clean)



.-(/Volumes/joshua/www/txfunds)-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------(joshua@Kusanagi)-
`--> git rebase --abort
HEAD is now at 5efccf1 - comiitting code related to api permissions



.-(/Volumes/joshua/www/txfunds)-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------(joshua@Kusanagi)-
`--> git log -n10 --oneline
5efccf1 - comiitting code related to api permissions
a8a5ee4 Style changes for IE
cfca618 Style changes for IE
8a69de6 Style changes for IE
8946585 - comiitting code related to api permissions - fixed an html error in the currencies template
5fba0a9 Merges the 1.11b branch bugfixes and changes into trunk
ef57049 Andrew Commiting on Blakes behalf on changes he made to transfers; Also an Indue GW balance fix; debitcarupload fix for LSN
69e4313 Fixed an issue with Support From email
9058fb6 Sets the svn property svn:eol-style to LF, to enforce unix style line endings
240839e Fixes up a lot of the whitespace issues.



.-(/Volumes/joshua/www/txfunds)-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------(joshua@Kusanagi)-
`--> git checkout bug586-test 
Switched to branch 'bug586-test'



.-(/Volumes/joshua/www/txfunds)-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------(joshua@Kusanagi)-
`--> git log -n10 --oneline  
b7b1f8a Resolves #586, Postback on deposit
5fba0a9 Merges the 1.11b branch bugfixes and changes into trunk
ef57049 Andrew Commiting on Blakes behalf on changes he made to transfers; Also an Indue GW balance fix; debitcarupload fix for LSN
69e4313 Fixed an issue with Support From email
9058fb6 Sets the svn property svn:eol-style to LF, to enforce unix style line endings
240839e Fixes up a lot of the whitespace issues.
cf27b6f - bug that came up with transferring. The transfer page had a hidden field called to, which was taking precedence over cards and usercard which would throw the system out a bit
7c21a81 Fixes #603, new add transaction form, journalled.
01e6292 Removes a pile of resource forks
880c5bc - bug that came up with transferring. The transfer page had a hidden field called to, which was taking precedence over cards and usercard which would throw the system out a bit



.-(/Volumes/joshua/www/txfunds)-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------(joshua@Kusanagi)-
`--> git rebase master-test bug586-test
First, rewinding head to replay your work on top of it...
Applying: Resolves #586, Postback on deposit
Using index info to reconstruct a base tree...
<stdin>:52: trailing whitespace.
                'name' => 'Invoice Transfer Out', 
<stdin>:175: trailing whitespace.

warning: 2 lines add whitespace errors.
Falling back to patching base and 3-way merge...
error: Your local changes to the following files would be overwritten by merge:
    templates/deposit_tpl.inc
Please, commit your changes or stash them before you can merge.
Aborting
Failed to merge in the changes.
Patch failed at 0001 Resolves #586, Postback on deposit

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



.-(/Volumes/joshua/www/txfunds)-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------(joshua@Kusanagi)-
`--> git rebase --abort
HEAD is now at b7b1f8a Resolves #586, Postback on deposit
Jhogendorn
источник
Вы должны публиковать содержимое git status, содержимое вашего gitignore и ls в соответствующих каталогах по отдельности, чтобы оно было более читабельным. По крайней мере, некоторым это может помочь.
Kzqai
У вас есть настройки crlf или что-нибудь? Rebase не должен создавать такое грязное дерево работы. И git statusэто может быть полезно, когда перебазирование не удается. Он отказывается бежать с грязным деревом; мы знаем, что это чисто, прежде чем вы начнете. Это состояние , когда есть локальные изменения , которые вызывают проблемы.
Cascabel
Вы уверены в порядке параметров для git rebase? Первая ссылка - это ссылка, на которую выполняется перебазирование, в то время как необязательная вторая ссылка - это та, которая будет проверена первой. Может тебе стоит их поменять местами.
Laurent Pireyn

Ответы:

191

Это тот же ответ, что и на еще один мой вопрос о проблемах.

Я использую Mac, и это неясное изменение конфигурации, казалось, устранило все мои проблемы, связанные с неустановленными изменениями, когда их не было.

git config --global core.trustctime false

Я думаю, это связано с различиями между временем файла Windows, временем файла Linux и временем файла Mac. кто знает, не стесняйтесь комментировать, если вы это сделаете.

Обновление: это сообщение в блоге , вроде как, объясняет, что происходит.

Jhogendorn
источник
1
Спасибо! Я бы никогда не понял этого.
Кристофер Пикслей,
1
То же самое и здесь, Крис - я определенно хотел бы знать, почему это сработало для меня.
karlbecker_com
К сожалению, у меня это не сработало. Выход из Xcode - даже если файлы, на которые жаловался Git, не входили в проект - действительно помог.
Uncommon
1
Я использую SuSE, использую git-svn для фиксации на сервере SuSE svn в другом часовом поясе. Каким бы ни было объяснение, это тоже устранило проблему для меня.
Джонатан Хартли
5
Вот объяснение того, что может быть причиной git-tower.com/blog/make-git-rebase-safe-on-osx/# ! Похоже, это связано с исправленным фоновым процессом.
schmunk
48

Что касается ответа Джошуа Хогендорна: мне кажется, что оставление Xcode открытым во время работы с репозиторием с git приводит к этим проблемам. Это даже привело к ситуации, когда git зафиксировал что-то, что, как я думал, было спрятано (и все еще оставалось после этого), но Xcode просто записал в файловую систему прямо во время перезагрузки.

Итак: закройте свой проект Xcode перед тем, как приступить к работе с репозиторием с помощью git, если вы хотите быть в безопасности, и тогда вам, вероятно, не понадобится установка false core.trustctime.

user132837
источник
Возможно, в вашей среде IDE активна какая-то настройка «автоматически сохранять файл каждые N минут»? Не делай этого.
Микко Ранталайнен
4
Я пробовал… и работал у меня! Закройте xcode перед выполнением перезагрузки. Потратить много времени впустую. Спасибо !
Nicolas Lauquin
У меня были те же ошибки, что и выше, хотя я использую Aptana Studio 3. Когда я вышел из Aptana, переустановка сработала. Несколько дней назад я отключил интеграцию Aptana с git. Либо он действительно не выключился, либо мне следовало перезапустить Aptana.
Bill Hoag
3
Столкнулся с той же проблемой, когда проект был открыт в Visual Studio 2013. Закрытие проекта решило проблему.
Мохаммад Дехган
3
В более общем плане это похоже на проблему с блокировкой файлов во время перезагрузки. Для меня это было webpack --watchзапущено.
Марк Стобер,