.gitignore nie działa

Mój plik .gitignore wydaje się być ignorowany przez git - czy plik .gitignore może być uszkodzony? Jakiego formatu pliku, ustawień regionalnych lub Kultury oczekuje git?

Mój .gitignore:

#this is a comment
debug.log
nbproject/

Wyjście z git status:

# On branch master
# Your branch is ahead of 'origin/master' by 1 commit.
#
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
#       debug.log
#       nbproject/
nothing added to commit but untracked files present (use "git add" to track)

Chciałbym, aby debug.log i nbproject/ nie pojawiały się na liście plików nie śledzonych.

Gdzie mam zacząć szukać, żeby to naprawić?

 1113
Author: jacknad, 2012-07-12

24 answers

Nawet jeśli nie śledziłeś plików do tej pory, git wydaje się być w stanie "wiedzieć" o nich nawet po dodaniu ich do .gitignore.

Uwaga: najpierw Zatwierdź bieżące zmiany, albo je utracisz.

Następnie uruchom następujące polecenia z górnego folderu twojego git repo:

git rm -r --cached .
git add .
git commit -m "fixed untracked files"
 2344
Author: Alin Huruba,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-05-05 08:30:08

Kiedy .plik gitignore nie działa (dodawanie czegoś doplik gitignore lub usunięcie czegoś z .plik gitignore), możesz sprawdzić następujące wskazówki:

  1. należy zwrócić uwagę na globalny plik gitignore, który czasami może wpływać na gitignore.
  2. Kiedy dodasz coś do .plik gitignore, jako osoba, która odpowiedziała to pytanie pierwsze:

    git rm -r --cached .
    git add .
    git commit -m "fixed untracked files"  
    
  1. kiedy usuniesz coś z .plik gitignore.powyższe kroki będą nie działa dla ciebie . Możesz spróbować tego:
    git add -f "filetype"
    git commit -m "Refresh removing filetype from .gitignore file."

"Typ pliku" oznacza plik lub typ pliku, który chcesz usunąć .plik gitignore. Chcesz, aby Typ pliku był śledzony ponownie.

 222
Author: ifeegoo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-03-07 23:29:32

Naprawiono. Ok, stworzyłem .plik gitignore w notatniku na windows i nie działał. Kiedy oglądałem ... plik gitignore w Linuksie wyglądał jak zorganizowany bełkot - być może notatnik wypisał unicode a nie ascii czy cokolwiek to jest 8-bit.

Więc przepisałem plik na moim Linuksie, a kiedy ściągnąłem go z powrotem do windows działa dobrze! Hurra!

 134
Author: Matt Parkins,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-07-12 12:30:50

Bez dodawania kolejnego commita do twojego projektu, jedna linijka wystarczy, aby .gitignore działała tak, jak powinna:

git rm -r --cached debug.log nbproject

Spowoduje to usunięcie go z repozytorium, ale nadal będzie je przechowywać fizycznie, w prostym języku angielskim, usunie historię zmian związanych z nimi, a także nie będzie śledzić ich zmian w żadnym przyszłym commicie. Lepsze wyjaśnienie znajdziesz tutaj .

 81
Author: H Aßdøµ,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-10-24 22:04:43

Inną przyczyną tego problemu są spacje lub tabulatory przed instrukcją:

Przykład:

#Be aware of following:
 notWorkingIgnore.*
workingIgnore.*

I jak wskazano w komentarzu poniżej, spacja końcowa może być również problemem

#Be aware of following:
notWorkingIgnore.* #<-Space
workingIgnore.*#<-Nospace
 32
Author: Rawa,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-10-02 10:55:24

Zauważyłem, że kodowanie .gitignore miało wpływ -- jeśli plik był Unicode, był ignorowany, jeśli był ASCII, nie był.

Proces:

  1. weryfikacja statusu: PS> git status
  2. tworzenie funkcji do Get-FileEncoding
  3. Test .gitignore's encoding: PS> Get-FileEncoding .gitignore
  4. Zmień kodowanie NA ASCII: PS> Set-Content .gitignore -Encoding Ascii -Value (Get-Content .gitignore)
  5. Potwierdź: PS> git status
 28
Author: craig,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:34:51

Podobnie jak w przypadku innych rozwiązań, Zatwierdź jako pierwszy i pamiętaj, że utracisz wszelkie nieprzewidziane zmiany.

Miałem lepsze wyniki z tym:

git rm -r --cached .
git reset HEAD --hard
git status

Zauważ, że status nie powinien mieć teraz żadnych zmodyfikowanych plików.

 17
Author: Steven Stark,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-10-21 17:17:30

Wszystkie odpowiedzi tutaj są rzeczywiście obejścia. Musisz stworzyć .plik gitignore przed uruchomieniem git init, w przeciwnym razie git nigdy nie będzie wiedział, że musisz zignorować te pliki, ponieważ zostały one już śledzone.

echo .idea/ >> .gitignore
git init

Jeśli rozwijasz się na co dzień, radzę Ci dodać swoje zwykłe ignorowane pliki do pliku ~/.gitignore_global. W ten sposób git będzie już wiedział, które Pliki (czyli "Twój użytkownik", ponieważ jest to plik w katalogu domowym) Zwykle ignorujesz.

 12
Author: CESCO,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-06-01 14:18:43

Sprawdź również katalog , w którym umieścisz .gitignore Powinno być w korzeniu twojego projektu :

./myproject/.gitignore

Nie w

./myproject/.git/.gitignore
 11
Author: Artem Zaytsev,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-10-14 06:32:07

W moim przypadku to dlatego, że pliki już istnieją w repo i staram się je zignorować.

To są rzeczy, które zrobiłem, aby rozwiązać problem:

  • skopiuj pliki do folderu temp
  • usuń je z folderu mojego projektu.
  • zatwierdź zmiany, które usuwają te pliki z repo
  • Ponownie dodałem te pliki do folderu mojego projektu

Do tego czasu wszelkie zmiany w tych plikach zostały zignorowane.

Myślę, że nie można ignorować plików, które już / align = "left" /

 10
Author: Edesa,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-08-21 08:27:15

Jest jeszcze jeden problem z .gitignore, który może się zdarzyć, szczególnie dla użytkownika windows, git nie lubi, gdy wymieniasz .gitignore (np. unity.gitignore). Będziesz chciał zawsze nazywać go .gitignore, lub w systemie windows, .gitignore., Ponieważ windows myśli, że próbujesz zmienić nazwę bez nazwy pliku.

 6
Author: Goldblaze,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-10-29 16:05:58

Właśnie natknąłem się na ten problem. Zawartość w moim .plik gitignore nadal pojawiał się na liście nie śledzonych plików.

Używałem tego do utworzenia pliku ignorowania:

echo "node_modules" > .gitignore

Okazało się, że podwójne cytaty powodowały dla mnie problem. Usunąłem plik ignorowania, a następnie ponownie użyłem polecenia bez cudzysłowów i działało zgodnie z oczekiwaniami. Nie musiałem mieszać z kodowaniem plików. Jestem na maszynie Win10 używając Cmder.

Przykład:

echo node_modules > .gitignore

 6
Author: bprdev,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-11-03 05:26:20

Dla mnie żadna z powyższych odpowiedzi nie zadziałała. Musiałem skopiować .gitignore tekst do exclude.txt pliku znalezionego w

<Your-project-folder>\.git\info

Po zakończeniu odśwież zmiany, a wszystkie Nie śledzone pliki znikną. Commit jak zwykle.

 5
Author: raga,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-02-20 00:47:06

Miałem ten sam problem. Wydaje mi się, że problemem była rozbieżność CR vs CR+LF. Schowałem rzeczy w moim .gitignore używając cmd (w windows 7) i następującego polecenia:

Zły:

Echo "file_to_be_ignored.py">>.gitignore
echo"*~">>.gitignore

Itd.

Problem polegał na tym, że ta komenda nie umieszcza WŁAŚCIWEGO znacznika końca linii, aby git rozpoznał nowe linie (CR lub CR+LF, gdy git oczekuje drugiego). Rozwiązałem problem przez ręczne zastępowanie każdej nowej linii w vim (vim na ratunek!) i zadziałało idealnie.

Spróbuj edytować swoje .gitignore w Notepad++ lub vim (najlepiej), nawet jeśli plik wygląda jak poprawnie sformatowany, spróbuj zastąpić nowe linie. Brzmi dziwnie, wiem, ale zadziałało na mnie. : D

 4
Author: fictivelogic,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-02-21 06:32:39

[[5]] miałem taki problem, zgitignore zawierający tę linię:

lib/ext/

Właśnie zdałem sobie sprawę, że w rzeczywistości ten katalog jest dowiązaniem symbolicznym do folderu gdzie indziej:

ls -la lib/ext/
lrwxr-xr-x 1 roipoussiere users 47 Feb  6 14:16 lib/ext -> /home/roipoussiere/real/path/to/the/lib

W linii lib/ext/, git szuka folderu , ale dowiązaniem symbolicznym jest Plik , więc mój katalog lib nie jest ignorowany.

Naprawiłem to zastępując lib/ext/ przez lib/ext na moim .gitignore.

 4
Author: roipoussiere,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-03 14:21:03

Specjalnie dla użytkowników systemu Windows: jeśli nie śledzisz plików i czyszczenie / usuwanie plików z pamięci podręcznej nie działa. Spróbuj otworzyć powershell i przekonwertować .plik gitignore do kodowania UTF-8.

1)$Myfile = Get-Content ..gitignore

2)$Myfile = | Out-File-Encoding "UTF8".gitignore

Trzeba to zrobić tylko raz, aby zakodować .plik gitignore dla tego katalogu, a ponieważ plik jest następnie zakodowany poprawnie, gdy edytujesz plik w przyszłości, powinien działać. I prawdopodobnie jest to spowodowane usterką z GitHub nie jest o odczyt kodowania non UTF-8 dla .plik gitignore. O ile wiem, ten problem nie został jeszcze rozwiązany w systemie Windows. Nie za duża sprawa, tylko ból do debugowania, gdy nie działa.

 4
Author: maximusg,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-11-11 01:27:15

Mój problem był (jak sugerował OP) skorumpowany .plik gitignore. Nie wierzyłem w to i ignorowałem tę możliwość, dopóki wszystko inne nie zawiodło. Korupcja nie pojawiła się w vi, ale były dwa bajty na początku pliku, który spowodował .plik gitignore do zignorowania. Dla mnie pojawiły się dopiero po wpisaniu cat .gitignore, co pokazało:

��# Built application files
*.apk
*.ap_

# ...

Nie mam pojęcia, jak się tam znalazły, ale odtworzenie pliku naprawiło problem. Analiza szesnastkowa uszkodzonego pliku

user@dev ~/project/myproject $ xxd -b .gitignore 
00000000: 11111111 11111110 00100011 00000000 00100000 00000000  ..#. .
00000006: 01000010 00000000 01110101 00000000 01101001 00000000  B.u.i.
 4
Author: pcdev,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-01-08 02:15:35

Jedną rzeczą, na którą warto zwrócić uwagę, jest to, czy ratujesz swoje .plik gitignore z poprawnymi zakończeniami linii?

Okna: Jeśli używasz go w systemie windows, czy zapisujesz go z zakończeniami linii systemu windows? Nie wszystkie programy będą to robić domyślnie, notepad++ i wiele edytorów php domyślnie kończy się Linuksem, więc pliki będą kompatybilne z serwerem. Jednym z łatwych sposobów, aby to sprawdzić, jest otwarcie pliku w notatniku windows. Jeśli wszystko pojawia się w jednej linii, wtedy plik został zapisany z linuksową linią zakończenia.

LINUX: Jeśli masz problemy z działaniem pliku w środowisku linux. Otwórz plik w edytorze takim jak emacs lub nano. Jeśli widzisz znaki niedrukowalne, plik został zapisany z zakończeniami linii systemu windows.

 3
Author: Beachhouse,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-06-26 16:29:47

Ok, więc w moim przypadku przyjęte rozwiązanie nie zadziałało, a to co zadziałało jest opisane tutaj:

Https://ericnelson.wordpress.com/2014/06/21/is-visual-studio-2013-ignoring-your-gitignore-file/

W skrócie:

    Zamknij Visual Studio.
  • przejdź do swojego .git folder
  • Usuń ms-persist.xml
  • Restart Visual Studio

Hope this helps somebody sometime

 3
Author: Bartosz,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-03-29 10:41:30

Po prostu usunąłem folder lub plik, który zatwierdził wcześniej w git, wykonując polecenie, a następnie plik gitignore będzie odzwierciedlał poprawne pliki.

    git rm -r -f "folder or files insides"
 0
Author: Atif Hussain,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-04-10 08:13:02

The .plik gitignore nie będzie działał, jeśli masz komentarze w wierszu, takie jak:

foo/bar # The bar file contains sensitive data so we don't want to make this public

Zmień to na to:

# The bar file contains sensitive data so we don't want to make this public
foo/bar
 0
Author: James,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-09-28 20:18:20

Miałem z tym mały problem. Udało mi się udać do www.GitHub.com/project i usuń plik za pomocą interfejsu użytkownika i dodaj tę zmianę do głównego repo.

Wygląda na to, że dodałem plik do repo, zanim zrobiłem .gitignore. To chyba działa.

 0
Author: Andy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-12-01 20:08:27

Jeśli jesteś użytkownikiem Notepad++, spróbuj wykonać następujące czynności:

Otwórz swoje .plik gitignore używając Notepad++ i do:

Edycja > Konwersja EOL > Format Windows > Zapisz

Spróbuj ponownie użyć git status i sprawdź, czy działa.

Odpowiedź na podobne pytanie zamieściłem tutaj .

 0
Author: Ozesh,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-03-28 11:42:11

Dla mnie był to kolejny problem. Ojej .gitignore jest ustawiony, aby ignorować wszystko, z wyjątkiem rzeczy, które mówię, aby nie ignorować. Jak takie:

/*
!/content/

Teraz to oczywiście oznacza, że mówię również gitowi, aby zignorował .gitignore. Co nie było problemem, dopóki nie śledziłem .gitignore. Ale w pewnym momencie podjąłem decyzję .gitignore. To doprowadziło do .gitignore jest właściwie ignorowany.

Więc dodanie jeszcze jednej linii naprawiło to:

/*
!/content/
!.gitignore
 0
Author: user8118328,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-09-04 19:41:28