Co to jest .gitignore?

212

Właśnie utworzyłem repozytorium Github i zastanawiałem się, do czego służy ten .gitignoreplik. Zacząłem od nie tworzenia jednego, ale dodałem jeden ze względu na fakt, że większość repozytoriów ma jedno. Czy muszę go mieć? Czy mogę to po prostu zignorować, czy ma to jakieś zastosowanie? Przeprowadziłem badania na ten temat, ale nie znalazłem konkretnego wyjaśnienia.

Zahachos
źródło

Odpowiedzi:

175

.gitignoremówi git, które pliki (lub wzorce) powinien zignorować. Zwykle służy do unikania przenoszenia plików tymczasowych z katalogu roboczego, które nie są przydatne dla innych współpracowników, takich jak produkty kompilacji, tworzenie tymczasowych plików IDE itp.

Pełne informacje można znaleźć tutaj .

Mureinik
źródło
Więc jeśli utworzysz .gitignore w nowym repozytorium na github.com, a następnie wykonaj git init i git add . na komputerze lokalnym - jeszcze nie podłączony do .gitignore, ponieważ nie jest jeszcze podłączony do tego repozytorium - jak to działa? Czy to działa, kiedy wykonuję polecenie git? Lub?
Xonatron
do czego _._gitignoresłuży czy jest używany tylko wtedy, gdy gitignore jest w sub-reż.?
Saikat Chakrabortty,
Pozostaje więc lokalnie, ale nie jest wypychany do źródła? Więc jeśli jakiś użytkownik pobiera repozytorium github, to czy ten tajny plik również go pobiera?
Poznaj Zaveri
Co oznacza ignorowanie ? Kto / co / kiedy ignoruje? Wiem, co oznacza słowo ignoruj, ale nie znajduję jasnego opisu tego, co oznacza ignorowanie w kontekście Gita. Oczywiście ten termin jest całkowicie zrozumiały dla ludzi, którzy go rozumieją, ale wszystko, co napisano, aby zdefiniować coś dla ludzi, którzy jeszcze nie wiedzą, musi wyjaśnić wszystkie terminy, które mają definicje unikalne dla danego kontekstu.
user34660,
1
@ user34660 Ignoruj ​​oznacza po prostu: - Git nie będzie śledził zmian w plikach określonych przez (wzorce) w .gitignorepliku. Nawet jeśli je zmienisz, git nie pokaże ich jako zmodyfikowanych.
Mureinik,
42

Jest to lista plików, które chcesz ignorować w katalogu roboczym.

Załóżmy, że korzystasz z komputera Mac i masz pliki .DS_Store we wszystkich swoich katalogach. Chcesz, aby git je zignorował, więc dodajesz .DS_Store jako linię w .gitignore. I tak dalej.

Dokumenty git powiedzą ci wszystko, co musisz wiedzieć: http://git-scm.com/docs/gitignore

Andy Lester
źródło
2
Wasz .DS_Storescenariusz ostatecznie do mnie przemówił, jak sądzę, nie myślałem o tej koncepcji, ponieważ nie potrzebowałem jej jeszcze w projekcie. Dziękuję Ci. Skończyło się na tym, że używam tego jako punktu wyjścia, ponieważ używam wszystkich różnych systemów operacyjnych, zwracając szczególną uwagę na # OS generated files #sekcję.
phoenixlaef,
2
Wiem, że spóźniłem się na ten wątek, ale dziękuję @AndyLester! Jestem nowicjuszem, jeśli chodzi o programowanie i Github. Uważam, że wiele odpowiedzi napisanych, aby odpowiedzieć na tego typu pytania, jest wypełnionych terminami, których nowicjusz może nie rozumieć (tj. Produkty kompilacji, tymczasowe pliki IDE tworzą .... jakie to są h @ ll!). Jednak opis Twojego Maca jest idealny w swojej eleganckiej prostocie!
Vesuccio
21

Podczas wykonywania zatwierdzenia nie chcesz przypadkowo dołączać plików tymczasowych ani budować określonych folderów. Dlatego skorzystaj z .gitignorelistowania elementów, które chcesz zignorować od popełnienia.

Co ważne, git status jest to jedno z najczęściej używanych poleceń, w którym chcesz git statuswyświetlić listę zmodyfikowanych plików.

Chcesz , aby Twoja git statuslista wyglądała czysto od niechcianych plików. Na przykład zmieniłem a.cpp, b.cpp, c.cpp, d.cpp & e.cpp, chcę, git statusaby wymienić następujące:

git status
a.cpp
b.cpp
c.cpp
d.cpp
e.cpp

Nie chcęgit status wymieniać takich zmienionych plików z plikami obiektów pośrednich i plikami z folderu kompilacji

git status
a.cpp
b.cpp
c.cpp
d.cpp
e.cpp
.DS_Store
/build/program.o
/build/program.cmake

Dlatego, aby uwolnić się od git statuslisty tymczasowych plików tymczasowych i przypadkowego dopuszczenia ich do repozytorium, powinienem stworzyć plik, .gitignorektóry każdy robi. Wszystko, co muszę zrobić, wymień pliki i foldery, .gitignorektóre chcę wykluczyć z zatwierdzania.

Oto moje, .gitignoreaby uniknąć popełniania niepotrzebnych plików

/*.cmake
/*.DS_Store
/.user
/build
programator_galaktyk
źródło
7

Są pliki, do których Git nie chce się zalogować. Git widzi każdy plik w kopii roboczej jako jedną z trzech rzeczy:

  1. śledzone - plik, który został wcześniej zainscenizowany lub zatwierdzony;
  2. nieśledzony - plik, który nie został wystawiony ani zatwierdzony; lub
  3. ignored - plik, który Git wyraźnie polecił zignorować.

Zignorowane pliki to zwykle artefakty i pliki generowane maszynowo, które można uzyskać ze źródła repozytorium lub w inny sposób nie powinny zostać zatwierdzone. Niektóre typowe przykłady to:

  • pamięci podręczne zależności, takie jak zawartość /node_moduleslub/packages
  • skompilowany kod, takie jak .o, .pycoraz .classpliki
  • katalogi wyjściowe budować, takie jak /bin, /outlub/target
  • Pliki generowane w czasie wykonywania, takie jak .log, .locklub.tmp
  • ukryte pliki systemowe, takie jak .DS_StorelubThumbs.db
  • osobiste pliki konfiguracyjne IDE, takie jak .idea/workspace.xml

Zignorowane pliki są śledzone w specjalnym pliku o nazwie .gitignorerejestrowanym w katalogu głównym repozytorium. Nie ma wyraźnego polecenia git ignore: zamiast tego .gitignoreplik należy edytować i zatwierdzać ręcznie, gdy masz nowe pliki, które chcesz zignorować. .gitignorepliki zawierają wzorce dopasowane do nazw plików w repozytorium, aby określić, czy należy je zignorować. Oto przykładowy.gitignore plik. Aby uzyskać więcej informacji, spójrz na ten link

imk
źródło
5

Głównym celem .gitignore - aby uniknąć dodawania niepotrzebnych plików itp. Git

Mam wiele osobistych notatek / bazgrołów w niektórych repozytoriach: są one przydatne dla mnie, ale nie dla nikogo innego. Nie chciałbym, aby był przesyłany do github, ponieważ po prostu wprowadzałby w błąd wszystkich, którzy go czytają. Dobrą rzeczą jest to, że mogę poprosić gita o „zignorowanie” tych plików. Jedynym kosztem tego podejścia jest to, że nie będę w stanie odzyskać tych notatek, jeśli komputer ulegnie awarii itp.

BKSpurgeon
źródło