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

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.


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.


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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.