2013-06-20 5 views
59

Ok, więc dodałem plik .gitattributes z liniami jak tenJak wymusić na Git wymeldowanie w gałęzi głównej i usunąć powroty karetki po tym, jak normalizuję pliki przy użyciu atrybutu "tekst"?

*.css text 
*.js text 
etc... 

Następnie postępujesz zgodnie z instrukcjami na http://git-scm.com/docs/gitattributes#_checking-out_and_checking-in

$ rm .git/index  # Remove the index to force Git to 
$ git reset   # re-scan the working directory 
$ git status  # Show files that will be normalized 
$ git add -u 
$ git add .gitattributes 
$ git commit -m "Introduce end-of-line normalization" 

Ale teraz moja kopia robocza nadal ma powrotu karetki! Mam nieśledzone pliki, które chciałbym zachować. Jak mam ponownie zamówić git w gałęzi master przy użyciu znormalizowanych plików?

Wiem, że pliki są znormalizowane w repozytorium, ponieważ kiedy klonuję repo, mam wszystkie pliki bez powrotu karetki.

Odpowiedz

163

Ahah! Dokonaj kasacji poprzedniego zatwierdzenia, a następnie kup master.

git checkout HEAD^ 
git checkout -f master 
+3

Dzięki za obejście tego problemu, ale jest to rażący problem w git, że "checkout -f" tak naprawdę nie wymusza ponownej zapłaty. Innym problemem jest usunięcie najpierw wszystkich plików kopii roboczej (tj. Wszystkiego oprócz katalogu .git). – pfalcon

+0

Ah, tak, dzięki za to! Słysząc to, domyślam się, że możemy po prostu usunąć interesujące pliki i uruchomić kasę. Dla mnie był tylko jeden plik, który próbowałem poprawić. Ale oczywiście mogą to być wszystkie pliki, setki lub tysiące. – Jason

+0

To nie powiedzie się na git 1.8.3 (mac) z: error: pathspec "HEAD ^" nie pasuje do żadnego pliku (ów) znanego z git. – dval

9

Jak inni podkreślili, można po prostu usunąć wszystkie pliki z repozytorium, a następnie je sprawdzić. Wolę tę metodę i można to zrobić za pomocą kodu poniżej

git ls-files -z | xargs -0 rm 
git checkout -- . 

lub jednej linii

git ls-files -z | xargs -0 rm ; git checkout -- . 

używam go cały czas i nie znalazłem żadnych dół boki jeszcze!

jakiegoś innego oświadczenia, -z dołącza znak null na koniec każdego wyjścia wejścia przez ls-files i -0 mówi xargs do oddzielania wyjście było odbieranie przez tych zerowych znaków.

Powiązane problemy