Git rebase kończy się niepowodzeniem, „Twoje lokalne zmiany w następujących plikach zostaną nadpisane przez scalenie”. Brak lokalnych zmian?

104

Oto moja transkrypcja z próby połączenia mojej gałęzi bugfix z moją główną gałęzią w ramach przygotowań do wypchnięcia jej w górę. Od czasu utworzenia gałęzi bugfix nastąpiło kilka zmian wprowadzonych przez autorów do mastera, który teraz odmawia ponownego bazowania.

Pliki, w których zgłasza błędy, nie są różnicowane po otwarciu. żadne pliki nie zostały dodane, usunięte ani nie zmieniono ich nazw. Nic nie jest ignorowane i nic nie jest śledzone, inscenizowane lub niestestowane. Jestem kompletnie zaskoczony, dlaczego rebase nie działa.

Jestem na OS X 10.6.6 i 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
źródło
Powinieneś osobno publikować zawartość statusu git, zawartość swojego gitignore i ls w odpowiednich katalogach, aby była bardziej czytelna. To mogłoby przynajmniej pomóc niektórym.
Kzqai
Czy masz jakieś ustawienia crlf czy coś? Rebase nie powinien tworzyć takiego brudnego drzewa pracy. A git statusto może być pomocne, gdy rebase zawiedzie. Odmawia biegania z brudnym drzewem; wiemy, że jest czysty, zanim zaczniesz. Jest to stan, kiedy nie lokalne modyfikacje, który jest przyczyną problemu.
Cascabel
Czy jesteś pewien kolejności parametrów w git rebase? Pierwszy ref jest tym, do którego należy zmienić bazę, podczas gdy opcjonalny drugi ref jest tym, który zostanie sprawdzony jako pierwszy. Może powinieneś je zamienić.
Laurent Pireyn,

Odpowiedzi:

191

To ta sama odpowiedź, co inne moje pytanie dotyczące kłopotów.

Jestem na komputerze Mac i ta niejasna zmiana konfiguracji zdawała się naprawiać wszystkie moje nieszczęścia dotyczące zmian niestopowych, gdy ich nie było.

git config --global core.trustctime false

Myślę, że ma to związek z różnicami między czasami plików systemu Windows, czasami plików linux i plików mac. kto wie, nie krępuj się komentować, jeśli tak.

Aktualizacja: ten post na blogu wyjaśnia, co się dzieje.

jhogendorn
źródło
1
Dzięki! Nigdy bym tego nie rozgryzł.
Christopher Pickslay
1
To samo, Chris - zdecydowanie chciałbym wiedzieć, co spowodowało, że to zadziałało dla mnie.
karlbecker_com,
Niestety to nie zadziałało. Zamknięcie Xcode - mimo że plików, na które skarżył się Git, nie było w projekcie - pomogło.
Niezbyt często
1
Jestem na SuSE i używam git-svn do zobowiązania się do serwera svn SuSE w innej strefie czasowej. Bez względu na wyjaśnienie, to rozwiązało również problem dla mnie.
Jonathan Hartley
5
Oto wyjaśnienie, jaka może być przyczyna git-tower.com/blog/make-git-rebase-safe-on-osx/# ! Wygląda na to, że ma to związek ze zmienionym procesem w tle.
schmunk
48

Jeśli chodzi o odpowiedź Joshuy Hogendorna: wydaje mi się, że pozostawienie otwartego Xcode podczas pracy z repozytorium z git prowadzi do tych problemów. Doprowadziło to nawet do sytuacji, w której git popełnił coś, co myślałem, że zostało schowane (i nadal miałem), ale Xcode właśnie napisał do systemu plików podczas rebase.

Więc: zamknij projekt Xcode, zanim zaczniesz pracować nad repozytorium z git, jeśli chcesz być bezpieczny, a wtedy prawdopodobnie nie potrzebujesz fałszywego ustawienia core.trustctime.

user132837
źródło
Być może w IDE było aktywne jakieś ustawienie „automatycznie zapisuj plik co N minut”? Nie rób tego.
Mikko Rantalainen
4
Próbowałem… i pracowałem dla mnie! Zamknij xcode przed wykonaniem rebase. Trać trochę czasu na nic. Dzięki !
Nicolas Lauquin
Miałem te same błędy, co powyżej, chociaż używam Aptana Studio 3. Kiedy wyszedłem z Aptany, rebase działał. Kilka dni temu wyłączyłem integrację git Aptany. Albo tak naprawdę się nie wyłączył, albo powinienem ponownie uruchomić Aptanę.
Bill Hoag,
3
Napotkano ten sam problem, gdy projekt był otwarty w Visual Studio 2013. Zamknięcie projektu rozwiązało problem.
Mohammad Dehghan
3
Bardziej ogólnie wygląda to na problem z blokowaniem plików podczas ponownego bazowania. Dla mnie to był webpack --watchbieg.
Marc Stober