poniedziałek, 13 lutego 2012

Jak usunąć plik z repozytorium GIT'a nie usuwając go z dysku

Jak?
Ano tak:
git rm --cached mylogfile.log

Czasami jest jeszcze gorzej. Okazuje się, że wpisanie nazwy pliku do .gitignore niczego nie zmienia! Wcale nie jest ignorowany, a wszystkie zmiany dokonują się z pominięciem tego wpisu. Nie pytaj mnie dlaczego taki idiotyzm nadal funkcjonuje. Funkcjonuje. I tyle.

Tak to zmienić:
git rm -r --cached .
git add .
git commit -m "fixed untracked files"

Pamiętaj o kropkach na końcu.

Pojawianie się zmodyfikowanych plików zaraz po "clone" w GIT'cie

Zainicjowanie w GIT'cie nowego repozytorium to
git clone ssh://nazwa_uzytkownika.serwer.pl/ nazwa_repo
Standardowo zaraz po tej operacji wszystkie zaciągnięte pliki są gotowe do edycji, ale nie edytowane. Innymi słowy
git status
nic nie pokazuje.
Niestety czasami (oczywiście w Windows) zaraz po tej operacji git status pokazuje kupę właśnie co wyedytowanych plików. Jest to arcyirytujące i nie mija po wykonywaniu ślepych commit'ów itp. Bywa, że po dowolnym pull'u problem znów odradza się niczym fenix z popiołów.
Okazało się, że problem tkwi w windowsowych znacznikach końca linii CRLF.
Wystarczy na repozytorium wywołać:
git config core.autocrlf false
i wszystko wraca do normy.

Problem ten opisany jest szczegółowo tutaj:
http://stackoverflow.com/questions/5009096/files-showing-as-modified-directly-after-git-clone