Git - Ignoruj ​​folder node_modules wszędzie


367

Mam projekt zawierający wiele innych projektów:

  • Główny projekt
    • Mini projekt 1
    • Mini projekt 2

Wszystkie zawierające node_modulesfolder. Chcę, aby git zignorował folder bez względu na to, gdzie zaczyna się od folderu głównego. Coś takiego do dodania .gitignore:

*node_modules/*

Odpowiedzi:


747

Dodaj

node_modules/

do .gitignorepliku, aby zignorować wszystkie katalogi wywoływane node_modulesw bieżącym folderze i dowolnych podfolderach


jaka byłaby globalna ścieżka, by zrobić to samo dla karmy, wyklucza?
SuperUberDuper,


8
Zobacz odpowiedź @ AndrewSchreiber, jeśli wcześniej dodałeś folder node_modules do git. Musisz usunąć go z pamięci podręcznej za pomocą polecenia „git rm -r --cached node_modules”.
Casper

176

Użyj uniwersalnej jednowierszowej w terminalu w katalogu projektu:

dotknij .gitignore && echo "node_modules /" >> .gitignore && git rm -r --cached node_modules; status git

Działa bez względu na to, czy masz utworzony, .gitignoreczy nie, bez względu na to, czy dodałeś node_modulesdo śledzenia git, czy nie.

Następnie zatwierdź i wciśnij .gitignorezmiany.

Wyjaśnienie

touchwygeneruje .gitignoreplik, jeśli jeszcze nie istnieje.

echoi >>dołącza się node_modules/na końcu .gitignore, powodując node_modulesignorowanie folderu i wszystkich podfolderów.

git rm -r --cachedusuwa node_modulesfolder z git control, jeśli został wcześniej dodany. W przeciwnym razie wyświetli się ostrzeżenie pathspec 'node_modules' did not match any files, które nie ma skutków ubocznych i można je bezpiecznie zignorować. Flagi powodują, że usuwanie jest rekurencyjne i obejmuje pamięć podręczną.

git statuswyświetla nowe zmiany. Pojawi się zmiana na .gitignore, a node_modulesnie pojawi się, ponieważ nie jest już śledzony przez git.


5
touchnie powinno być tutaj konieczne: >>utworzy plik, jeśli nie istnieje.
lionello

touchjest potrzebne. >>wróci no such file or directory: .gitignoreinaczej.
Andrew Schreiber,

1
Hmm, wygląda na to, że różni się w zależności od systemu operacyjnego
lionello

Wydaje się, że macOS nie potrzebuje dotyku
Carles Alcolea

echo "node_modules/" > .gitignorepowinien utworzyć nowy plik z oryginalną zawartością, używając >> dołącza tekst na końcu istniejącego określonego pliku
chrisz

28

Spróbuj zrobić coś takiego

**/node_modules

** służy do rekurencyjnego połączenia w całym projekcie

Dwie kolejne gwiazdki **we wzorach dopasowanych do pełnej nazwy ścieżki mogą mieć specjalne znaczenie:

Prowadzenie, **po którym następuje ukośnik, oznacza dopasowanie we wszystkich katalogach. Na przykład **/foopasuje do pliku lub katalogu w foodowolnym miejscu, tak samo jak wzorzec foo. **/foo/bardopasowuje plik lub katalog w bardowolnym miejscu bezpośrednio w katalogu foo.

Trailing /**pasuje do wszystkiego w środku. Na przykład abc/**dopasowuje wszystkie pliki w katalogu abcwzględem lokalizacji pliku .gitignore z nieskończoną głębią.

Ukośnik, po którym następują dwie kolejne gwiazdki, następnie ukośnik odpowiada zero lub większej liczbie katalogów. Na przykład, a/\**/bmecze a/b, a/x/b, a/x/y/bi tak dalej.

Inne kolejne gwiazdki są uważane za nieprawidłowe.

Odniesienie


2
To jest poprawna odpowiedź.
król

Chcesz wyjaśnić, dlaczego to podejście jest lepsze niż po prostu node_modules/?
Tanckom

22

Przede wszystkim należy dodać .gitignoreplik do mojej aplikacji. Jak na obrazku poniżej.

Umieść .gitignore w folderze nadrzędnym / katalogu modułów_węzła.

a następnie dodaj to do swojego .gitignorepliku

/node_modules

Uwaga

Możesz także dodać inne pliki, aby je zignorować, aby zostały przesłane na github. Oto kilka innych plików przechowywanych w .gitignore. Możesz je dodać zgodnie ze swoimi wymaganiami. #to tylko sposób na komentarz w pliku .gitignore.

# See https://help.github.com/ignore-files/ for more about ignoring files.

# dependencies
/node_modules

# testing
/coverage

# production
/build

# misc
.DS_Store
.env.local
.env.development.local
.env.test.local
.env.production.local

npm-debug.log*
yarn-debug.log*
yarn-error.log*

Dlaczego miałbyś dodawać build do .gitignore?
Sebastian Nielsen,

6
@SebastianNielsen Ten sam powód, dla którego nie śledzimy modułów node_modules. Otrzymujesz kompilację / kompilując.
Daniel Foust,

8

Utwórz plik .gitignore w folderze głównym bezpośrednio za pomocą edytora kodu lub polecenia

Dla komputerów Mac i Linux

 dotknij .gitignore 

Dla Windowsa

 echo .gitignore 

otwórz .gitignore deklaruj nazwę folderu lub pliku jak ta / nazwa_folderu


4

Dodanie poniżej wiersza w .gitignore zignoruje moduły węzłów z całego repozytorium.

node_modules

wprowadź opis zdjęcia tutaj


1
W jaki sposób? Zignoruje tylko folder node_modules w tym samym folderze, w którym znajduje się plik .gitignore
Rajendran Nadar

@RajendranNadar dzięki, właśnie próbowałem to rozgryźć.
Jack BeNimble,

0

Dodaj poniższy wiersz do swojego .gitignore

*/node_modules/*

Spowoduje to zignorowanie wszystkich modułów node_mode w bieżącym katalogu, a także podkatalogu.


Pamiętaj, że odpowiedź na to pytanie jest już zaakceptowana. Proszę edytować swoje odpowiedzi, aby zapewnić, że poprawia po innych odpowiedzi już obecnych w tej kwestii.
hongsy

0

możesz to zrobić również za pomocą SVN / Tortoise git.

po prostu kliknij prawym przyciskiem myszy node_modules -> Tortoise git -> dodaj do listy ignorowanych.

Spowoduje to wygenerowanie .gitIgnore dla Ciebie i nie znajdziesz ponownie folderu node_modules podczas przemieszczania.


0
**node_modules

To działa dla mnie

podejście rekurencyjne, aby zignorować wszystkie moduły_węzła obecne w podfolderach

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.