2013-07-23 14 views
8

Jestem nowy w git i nie mam pojęcia, co robię źle. Chcę uruchomić git diff - tylko nazwa-name , ale chcę wykluczyć pliki kończące się na .test, co oznacza, że ​​nawet jeśli te zmienne zostały zmienione, nie chcę, aby git diff wyprowadzał dane, które zostały zmienione. Próbowałem dodać te pliki do plików .gitignore, ale wszystko, co zrobiłem, to dołączenie .gitignore po uruchomieniu polecenia git diff!Git diff nie ignoruje określonych plików w .gitignore

Co robię źle i jak wykluczyć pliki po uruchomieniu git diff?

+1

Pokaż zawartość pliku .gitignore – bengoesboom

+1

Również można popełnić błąd w pliku gitignore widzimy, jeśli nie, że po wysłaniu go. – usumoio

Odpowiedz

15

Okay, właśnie to zrobiłeś źle. Git będzie nadal śledził te pliki, ponieważ już wcześniej zacząłeś śledzić je w swoim projekcie. W pewnym momencie wcześniej zrobił uruchomieniu wstępna zobowiązać się, że wyglądało:

git add . # this added everything to the tracking system including your .test files 
git commit -a -m 'I just committed everything in my project .test files included' 

oddanie rzeczy jest plik gitignore zachowa przyszłych pliki utworzone który kończy się .test przedostawaniu swój projekt, ale trzeba usunąć Pliki .test, które już powiedziałeś git śledzić z pamięci git. Umieszczanie rzeczy w gitignore nie wykonuje żadnej akcji dla już śledzonych plików. Co trzeba zrobić teraz to:

Wariant 1:

# you can remove the files from gits tracking system and then put them back 
# when you go to put them back now git will have no memory of tracking these 
# and will consider future edits to be ignored 
# Back your .test files up before doing this, and this will delete them from your project 
git rm /path/to/your/file.test 

Opcja 2:

# this is safer but does not use gitignore at all 
git update--index --assume-unchanged /path/to/your/file.test 

Po uruchomieniu opcji 2 mówisz git że przez resztę czasu, który plików nigdy się nie zmienia (nawet jeśli dzieje się to w prawdziwym życiu) To pozwala zachować pliki .test w ramach śledzonego projektu (tak jak są teraz), ale git już nigdy nie zawracuje ci głowy zmianą. Zauważ, że operacja ta może zostać cofnięta w dowolnym momencie i nie jest destrukcyjna, dlatego jest bezpieczniejsza. Powinieneś także przeczytać go przed użyciem.

https://www.kernel.org/pub/software/scm/git/docs/git-update-index.html

+2

Dla git 1.8 polecenie będzie: git update-index --assume-unchanged /path/to/your/file.test Przy okazji, świetna odpowiedź, bardzo mi to pomogło. – fabregas88

+0

Nie ma problemu, cieszę się, że mogłem pomóc. – usumoio

+4

Użycie 'git rm --cached' spowoduje usunięcie pliku tylko z indeksu - nie ma potrzeby wcześniejszego tworzenia kopii zapasowych. – Graeme

Powiązane problemy