2013-07-14 11 views
7

Uruchamianie Windows 7 z Git zainstalowanym od Git-1.8.3-preview20130601.exe.git checkout nie resetuje pliku

Mam zmodyfikowany plik w katalogu roboczym, chciałbym przywrócić go do stanu po ostatnim zatwierdzeniu. Próbowałem różnych wywołań git checkout, ale zmodyfikowany plik pozostaje w moim roboczym reż. Na przykład:

[C:\Work\BitBucket\proj1] 14:32:45>git status 
On branch work2 
Your branch is behind 'origin/work2' by 9 commits, and can be fast-forwarded. 
    (use "git pull" to update your local branch) 
Changes not staged for commit: 
    (use "git add <file>..." to update what will be committed) 
    (use "git checkout -- <file>..." to discard changes in working directory) 

     modified: pomodoro.html 
no changes added to commit (use "git add" and/or "git commit -a") 

[C:\Work\BitBucket\proj1] 14:32:53>git checkout pomodoro.html 

[C:\Work\BitBucket\proj1] 14:33:00>git status 
On branch work2 
Your branch is behind 'origin/work2' by 9 commits, and can be fast-forwarded. 
    (use "git pull" to update your local branch) 

Changes not staged for commit: 
    (use "git add <file>..." to update what will be committed) 
    (use "git checkout -- <file>..." to discard changes in working directory) 

     modified: pomodoro.html 
no changes added to commit (use "git add" and/or "git commit -a") 

[C:\Work\BitBucket\proj1] 14:33:04> 

(uzyskać ten sam wynik z git checkout -- pomodoro.html.)

więc git myśli pomodoro.html jest modyfikowana, ale kiedy używam

git difftool 

jestem powiedziano nam, że pliki są identyczne.

Nie wiem, czy jest to istotne, ale mam core.autocrlf ustawiony na true w mojej konfiguracji Git. Kiedy zmieniłem go na false, otrzymałem takie samo zachowanie.

+0

@MarkusUnterwaditzer Próbował tego. – millimoose

+0

'git checkout pomodoro.html' sprawdzi plik przed indeksem, a nie przed zatwierdzeniem - może to być winowajcą, jeśli już dodałeś zmiany. Aby * przywrócić * plik, chciałbym spróbować 'git checkout HEAD pomodoro.html'. – millimoose

+0

@millimoose: Nie wprowadziłem zmian, chcę tylko cofnąć zmiany nieopublikowane. "git checkout HEAD pomodoro.html" nie zadziałał, albo ... – Number8

Odpowiedz

2

to dziki strzał, ale:

jest to plik z jakiegoś powodu oznaczony jako wykonywalny w repo? jest mało prawdopodobne, że HTML, ale jeśli był przechowywany na przykład w Fat sformatowany dysk jest do pomyślenia. jeśli tak jest, a twój git Windows nie jest skonfigurowany do zignorowania uprawnień, plik zawsze zostanie zmieniony, ponieważ żadna ilość resetowania lub wyrejestrowania nie da ci wykonywanego bitu w oknach.

pozbyć wiadomości instalacyjnej FileMode false: https://superuser.com/a/139044/236874

+0

Pracuję z plikami wykonywalnymi i są one dobre w systemie Windows. Żadnych problemów z tego powodu (problemem jest tylko wtedy, gdy chcę utworzyć plik wykonywalny, nie znalazłem w nim sposobu w oknach, więc czekam w jakimś unixie, ustawiam, zatwierdzam i pcham). –

+0

może to poprawiło się w przeszłości. miałem problemy z tym kilka lat temu. pozwala czekać na odpowiedź od oryginalnego autora, jeśli nie jest świadomy resetowania lub jeśli istnieje jakiś poważny problem. – mnagel

+0

Po prostu miałem ten problem z plikiem PDF. Pojawił się krzywy po przesłaniu go z git, ale wyglądało to dobrze przez FTP. W końcu okazało się, że nie mogę się tego pozbyć za pomocą kasy lub skrytki i to mnie tutaj zabrało, co rozwiązało wszystko. dzięki za które. – mgPePe

4

Ten link (dostarczone przez AD7Six) - help.github.com/articles/dealing-with-line-endings - wydaje się być odpowiedź: naprawiaj zakończenia linii.
Ponieważ autocrlf został ustawiony na wartość true, nie wiem, w jaki sposób zakończono koniec linii w tym pliku.
Dzięki za wszystkie inne komentarze.

0

miałem podobne problemy, w moim przypadku na OSX i to ze względu na dwa pliki o tej samej nazwie, ale innym przypadku: https://sourcedevelop.org/blog/post/fix-git-commands-not-working-some-files

spędziłem godziny próbuje dowiedzieć się, jak to naprawić, postępując zgodnie z instrukcjami, jak te . Kluczem do rozpoznania symptomu dwóch plików o tej samej nazwie jest, gdy robisz checkout git na plikach, wtedy widzisz plik wymieniony na twoim następnym statusie git, jednak przypadek pliku jest inny. Skończyło się na usunięciu plików, a następnie dodaniu jednego z nich z powrotem.

git rm -f <filename> 
git rm -f <filename> 
git commit -m "Removing duplicate files" 
<put the file back, the version you want> 
git add . 
git commit -m "adding files back" 
Powiązane problemy