Używam Git samodzielnie dla mojego lokalnego oprogramowania w Visual Studio 2010. Niedawno utworzyłem nowy oddział, aby dokonać większego refaktoryzacji jednego z okien dialogowych . Zrobiłem następującymi zmianami:Nierozwiązywalny błąd Gita: Poniższe pliki drzewa, które nie zostały naprawione, zostałyby zastąpione przez pobranie płatności.
- Zmień nazwę Form1 do Form1a (w tym wszystkie pliki zależności)
- Dodaj nowy Form1
Sprawdziłem tę zmianę do gałęzi, powiedzmy form-refaktoryzacji. Co ciekawe, Git nie zauważył, że zmieniłem nazwę pliku Form1.cs na Form1a.cs i stworzyłem zupełnie nowy, zupełnie inny Form1.cs, ale zamiast tego zauważyłem nowy plik Form1a.cs i odkryłem wiele różnic między poprzednie i nowe pliki Form1.cs. Będzie to oczywiście prowadzić do całkowicie uzbrojonych różnic, ale nie obchodzi mnie w tym przypadku, o ile wszystkie pliki są poprawnie obsługiwane w końcu.
Potem przełączyłem się z powrotem na master, aby wykonać kilka innych drobnych zmian. Nic sprzecznego. Do tej pory wszystko działało dobrze.
Dzisiaj chciałem wrócić do mojej formy - refaktoryzacji, aby kontynuować tę pracę. Ale dostaję tylko następujący komunikat:
git.exe checkout form-refactoring
Aborting
error: The following untracked working tree files would be overwritten by checkout:
Form1.Designer.cs
Please move or remove them before you can switch branches.
Co to ma być? Wspomniany plik nie jest nieśledzony. Ani w gałęzi głównej, ani w gałęzi formowania-refaktoryzacji. Jest częścią obu gałęzi, ale jedna nie jest potomkiem drugiej. Co by się stało, gdybym go skasował, czy odszedł na dobre? Nie ufam, że Git przywrócił poprawny plik, jeśli teraz coś usunę. Nie grałem z żadnym plikiem poza wymienionymi wyżej operacjami Git, więc dlaczego miałbym teraz grać z jakimkolwiek plikiem, aby dalej używać operacji Git? Git go zepsuł, Git ma sobie z tym poradzić!
W tej chwili nie mogę kontynuować pracy, ponieważ nie mogę przełączać oddziałów. Czy istnieje proste rozwiązanie tego problemu?
Wersja Git to 1.7.6, TortoiseGit to 1.7.3.
Jeżeli zdarzy się, że wzór, który pasuje Form1.Designer.cs w .gitignore lub inny ignorować konfiguracje? – James
Ten plik ma zielony znacznik wyboru w Eksploratorze i ma również historię. Zakładam więc, że to nie jest ignorowane. Ponadto w moim projekcie są inne pliki Form.Designer.cs, które nie powodują żadnych problemów. I to nie jest pierwsze repozytorium Git, które stworzyłem z VS2010, do dziś działało dobrze nawet kilka starań w rozgałęzieniach. – ygoe
Proszę dokładnie sprawdzić filtry ignorowania, aby sprawdzić, czy zostały zmienione dla tego repozytorium lub oddziału. Nadal możesz zobaczyć status i historię w pliku, jeśli został dodany przed filtrem ignorowania.Wszystko, co używa statusu git, nadal będzie go zgłosić (jak znaczniki eksploratora) Może to spowodować błąd, który wskażesz, jeśli naprawdę nastąpiły zmiany w pliku, ponieważ Git zignoruje to teraz podczas działania statusu Git. Jednak Git nadal będzie wiedział, że zmienił się podczas próby zrealizowania transakcji i podania tego błędu. – James