2012-07-16 8 views
8

Mam moje osobiste małe repozytorium git na moim laptopie. Właśnie zatwierdziłem zmiany i sprawdziłem, że nie mam nic do zatwierdzenia - każdy wystawiony i zmodyfikowany plik został zatwierdzony.Dlaczego po skopiowaniu repozytorium git do innego katalogu mam zmodyfikowane pliki?

Po tym wszystkim skopiowałem wszystkie pliki z tego repozytu do innej lokalizacji i bum! Mam niezatwierdzone zmiany.

Uważam, że brakuje mi podstawowych zasad git. Czy ktoś może mi to zasugerować?

+0

Czy zamierzasz, aby nowa kopia była również repozytorium git? – bluesman

+1

Powinieneś dołączyć informację, że oryginalne repo było w systemie Windows, a kopia jest w systemie Ubuntu. To robi dużą różnicę. Biorąc pod uwagę te informacje, uważam, że odpowiedź parrhoyts jest poprawna. – suvayu

+0

Czy 'git diff' pokazuje rzeczywiste różnice? Czy po prostu widzisz "status git", mówiąc, że dokonałeś zmian?Może się zdarzyć, że indeks przechowuje pewne metadane dotyczące każdego pliku - kopia ma inne znaczniki czasu niż oryginał, więc 'git' może zgłosić, że te pliki nie pasują do tego, co według indeksu powinno tam być, nawet jeśli zawartość Pliki mogą nadal być identyczne. – twalberg

Odpowiedz

6

Twoje pliki w oknach prawdopodobnie mają zakończenia wiersza w linii powrotnej linii powrotnej i najprawdopodobniej w twoim oknie z oknem znajduje się core.autocrlf. Nie kopiuj go w ten sposób między różnymi platformami. Zamiast tego utwórz nowe repozytorium git na pudełku linux i wyciągnij z okna Windows. Możesz użyć git bundle lub git daemon na komputerze z systemem Windows, aby odsłonić repozytorium. Możesz też zrobić nagłe repo na Linuksie i git push --mirror z maszyny Windows, a następnie sklonować tam, gdzie ma się znaleźć ostateczna wersja.

Albo - całkiem prawdopodobne, że możesz już po prostu zrobić git reset --hard HEAD i naprawić go w skrzynce linux-owej. Prawdopodobnie powinieneś najpierw usunąć wszystko poza folderem .git, aby zapewnić całkowicie czyste działające drzewo.

1

Czy zmieniają się uprawnienia między folderami? Git zarejestruje zmianę uprawnień.

+1

Cóż, nie wiem dokładnie, co masz na myśli, ale skopiowałem pliki z komputera Win7 do Ubuntu, jeśli to ma znaczenie. – Patryk

+0

Jakie uprawnienia do plików nie są śledzone? [To pytanie] (http://stackoverflow.com/questions/1071241/how-does-git-handle-folder-permission) sugeruje, że tak nie jest. Skąd pochodzą twoje informacje? – simont

+0

Śledzi on wykonywalny bit, który, jak sądzę, może być ustawiony lub rozbrajany automatycznie, jeśli uzyskasz dostęp do systemów plików Windows z Ubuntu/linux – leighman

1

Kopiowanie z systemu Windows na system Linux wprowadza różnicę w prawach do plików, zmiany te są również śledzone przez git.

1

Mam do czynienia z tym samym problemem. Jednak skopiowałem pliki z hosta systemu linux do systemu gościa Virtual Box. Niektóre łącza zostaną usunięte, a niektóre uprawnienia do plików zostaną zmienione, co mogę naprawić wykonując git config core.filemode false.

9

Co zrobiłem, uruchom

git diff | grep -B 2 @@ | grep +++ 

uzyskać faktycznie zmienionych plików, a następnie wykonaj powrócić na wszystkich innych

+0

. Pokazuje pliki, które zostały faktycznie zmienione. Następnie sprawdź te, które są wymienione w statusie git, które nie pojawiają się w diff git –

0

Jeśli nie masz nic na zapas do stracenia, zrobić:

git checkout .

Spowoduje to przywrócenie drzewa roboczego do poprzedniego zatwierdzenia

0

Jeśli masz wiele rozgałęzień i wszystkie zmiany pchnął, to rozwiązanie może działać

Wystarczy dodać i zatwierdzić wszystkie zmiany, które widzisz, do bieżącej gałęzi (np. Master). Następnie sprawdź inny oddział (na przykład test) Lokalnie usuń gałąź główną (opcją -D). Wyciągnij gałąź główną z git

Gotowe ..!

Powiązane problemy