O rebase do Git falha, 'Suas alterações locais nos arquivos a seguir seriam substituídas por mesclagem'. Sem alterações locais?

104

Aqui está minha transcrição de tentar mesclar meu branch de correção de bug no branch master em preparação para colocá-lo no upstream. Houve algumas mudanças upstream puxadas para o master desde que o branch de correção de bug foi criado, e agora ele se recusa a rebase.

Os arquivos em que ele lança erros não são analisados ​​quando abertos. nenhum arquivo foi adicionado, removido ou renomeado. Nada é ignorado e nada não é rastreado, nem encenado, nem encenado. Estou completamente perplexo quanto ao motivo do rebase estar falhando.

Estou no OS X 10.6.6 e 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
fonte
Você deve postar o conteúdo de um status git, o conteúdo de seu gitignore e ls nos diretórios em questão separadamente, para que seja mais claramente legível. Isso pode ajudar alguns, pelo menos.
Kzqai
Você tem alguma configuração de crlf ou algo assim? Rebase não deveria estar criando uma árvore de trabalho sujo como essa. E o git statusque pode ser útil é quando o rebase falha. Ele se recusa a correr com uma árvore suja; sabemos que está limpo antes de você começar. É o estado quando não são modificações locais que está causando um problema.
Cascabel
Tem certeza sobre a ordem dos parâmetros para rebase do git? O primeiro ref é aquele para o qual será feito o rebase, enquanto o segundo ref opcional é aquele que será verificado primeiro. Talvez você deva trocá-los.
Laurent Pireyn

Respostas:

191

Esta é a mesma resposta que outra de minhas perguntas sobre problemas.

Estou em um mac, e essa mudança de configuração obscura parecia resolver todos os meus problemas com relação a mudanças não encenadas quando não havia nenhuma.

git config --global core.trustctime false

Acho que tem a ver com as diferenças entre os tempos de arquivo do Windows, os tempos de arquivo do Linux e os tempos de arquivo do mac. quem sabe, fique à vontade para comentar se o fizer.

Atualização: esta postagem do blog explica o que está acontecendo, mais ou menos.

Jhogendorn
fonte
1
Obrigado! Eu nunca teria percebido isso.
Christopher Pickslay
1
A mesma coisa aqui, Chris - eu definitivamente gostaria de saber o que fez com que isso funcionasse para mim.
karlbecker_com
Infelizmente, isso não funcionou para mim. Sair do Xcode - embora os arquivos dos quais Git reclamou não estivessem no projeto - ajudou.
Incomum
1
Estou no SuSE usando git-svn para me comprometer com um servidor SuSE svn em um fuso horário diferente. Seja qual for a explicação, isso resolveu o problema para mim também.
Jonathan Hartley
5
Aqui está uma explicação de qual pode ser a causa git-tower.com/blog/make-git-rebase-safe-on-osx/# ! Parece que tem a ver com um processo de revisão em segundo plano.
schmunk
48

Com relação à resposta de Joshua Hogendorn: me parece que deixar o Xcode aberto enquanto trabalhava no repositório com o git leva a esses problemas. Isso até levou a uma situação em que git cometeu algo que eu pensei ter escondido (e ainda tinha depois), mas o Xcode apenas escreveu no sistema de arquivos durante o rebase.

Portanto: feche seu projeto Xcode antes de trabalhar no repo com git se quiser estar seguro, e provavelmente não precisará da configuração false core.trustctime.

user132837
fonte
Talvez você tenha algum tipo de configuração "salvar arquivo automaticamente a cada N minutos" ativa em seu IDE? Não faça isso.
Mikko Rantalainen
4
Eu tentei ... e funcionou para mim! Feche o xcode antes de fazer um rebase. Perder muito tempo para nada. Obrigado !
Nicolas Lauquin
Eu tive os mesmos erros acima, embora esteja usando o Aptana Studio 3. Quando saí do Aptana, o rebase funcionou. Eu tinha desativado a integração git do Aptana alguns dias atrás. Ou ele realmente não desligou ou eu deveria ter reiniciado o Aptana.
Bill Hoag
3
Enfrentou o mesmo problema quando o projeto foi aberto no Visual Studio 2013. Fechar o projeto resolveu o problema.
Mohammad Dehghan
3
De forma mais geral, isso parece um problema com os arquivos sendo bloqueados durante um rebase. Para mim, estava webpack --watchfuncionando.
Marc Stober