Dlaczego „git reset HEAD” nie cofnie moich niezatwierdzonych, niezrealizowanych zmian?
Wcześniej byłem w stanie cofnąć zmiany poprzez SourceTree, wykonując funkcję „Odrzuć”, która pod maską generuje to polecenie:
git -c diff.mnemonicprefix=false -c core.quotepath=false reset -q HEAD -- myproj.csproj
git -c diff.mnemonicprefix=false -c core.quotepath=false checkout HEAD -- myproj.csproj
Nagle to nie działa. Robię Odrzuć, nie pojawia się błąd, odśwież widok, ale pliki są nadal „modyfikowane”. Próbowałem zrobić to samo w wierszu poleceń z następującym, tym samym wynikiem:
c:\myproject> git reset HEAD
Unstaged changes after reset:
M myproj.csproj
Dlaczego nadal jest wymieniony jako zmiana bez scenariusza?
Sprawdziłem, że plik jest rzeczywiście zapisywalny (żaden proces nie blokuje)
aktualizacja
git checkout
też nie działa:
C:\myproject>git checkout myproj.csproj
C:\myproject>git status
# On branch master
# 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: myproj.csproj
#
no changes added to commit (use "git add" and/or "git commit -a")
Aktualizacja 2 Próbowałem również:
git checkout --
git checkout -- .
git checkout HEAD
, z których żaden nie rozwiązuje mojego problemu
aktualizacja 3 - ogromny krok bliżej:
Okazuje się, że po wykonaniu transakcji, plik .csproj jest rzeczywiście przywracany do poprawnej wersji,ale sprawdzona wersja używa innegokodowanie kanału. Podczas gdy wersja z odprawą ma CR-LF (0D-0A) dla zasilania liniowego, wyewidencjonowany ma tylko LF (0A). Stąd git uważa plik za inny w każdej linii. Dlaczego to?
aktualizacja 4: dodano drugą linię poleceń git wydanych przez SourceTree. Nie zauważyłem tego po raz pierwszy, dlatego pomyślałemgit reset HEAD
zrobi wszystko. Nie zmienia to faktu, że podstawowym problemem jest nadal CR / LF (myślę)
streszczenie Nigdy nie znalazłem rozwiązania tego problemu, ale „rozwiązałem” to, sprawdzając plik. Moje pierwotne pytanie nie zawierało informacji, że SourceTree rzeczywiście wydało poprawne polecenia, aby cofnąć to, co chciałem, więc większość odpowiedzi dotyczy tego problemu. Thereal kwestia jest nadal niejasna, ale moja główna teoria mówi, że była związana z CR / LF.