Czy istnieje polecenie ignorowania dla git, tak jak w przypadku svn?


125

Jestem nowym użytkownikiem giti rozpoczynam nowy projekt. Mam kilka plików z kropkami, które chciałbym zignorować. Czy istnieje polecenie zignorowania dla gittego, co jest dla svn?


1
Dobra alternatywa dla gitignore: git update-index --assume-unchanged <file> , dzięki stackoverflow.com/a/16442091/2162226
Gene Bo

Odpowiedzi:


136

Nie ma specjalnego git ignorepolecenia.

Edytuj .gitignoreplik znajdujący się w odpowiednim miejscu w kopii roboczej. Następnie powinieneś to dodać .gitignorei zatwierdzić. Każdy, kto sklonuje to repozytorium, zignoruje te pliki.

Zauważ, że tylko nazwy plików zaczynające się od /będą zależne od katalogu, w którym się .gitignoreznajduje. Wszystko inne będzie pasowało do plików w dowolnym podkatalogu.

Możesz także edytować, .git/info/excludeaby zignorować określone pliki tylko w tej jednej kopii roboczej. .git/info/excludePlik nie zostanie zatwierdzona, a tym samym będą miały zastosowanie jedynie lokalnie w tej jednej kopii roboczej.

Możesz także skonfigurować plik globalny z wzorcami do ignorowania git config --global core.excludesfile. Będzie to miało zastosowanie lokalnie do wszystkich kopii roboczych git na tym samym koncie użytkownika.

Uruchom git help gitignorei przeczytaj tekst, aby poznać szczegóły.


75
Brak prostego polecenia ignorowania wydaje się takim niedopatrzeniem ze strony zespołu git.
jcollum

4
@jcollum Na pierwszy rzut oka tak, ale prostota aliasowania polecenia, aby dodać nowe ORAZ złożoność tworzenia jednego i pracy przez wszystkie skrajne przypadki / pułapki / potencjalne problemy związane z edycją pliku tekstowego również ma sens, aby pozostawić to użytkownik. Czuję się skonfliktowany, ponieważ zgadzam się z tobą i nie zgadzam się z tobą.
abelito

100

Bardzo przydatne polecenie git ignore zawiera niesamowite tj / git-extras .

Oto kilka przykładów użycia:

Wypisz wszystkie aktualnie ignorowane wzorce

git ignore

Dodaj wzór

git ignore "*.log"

Dodaj jeden z szablonów z gitignore.io

git ignore-io -a rails

git-extras dostarcza o wiele bardziej użytecznych poleceń. Zdecydowanie warto spróbować.


1
Więc jeśli użyję git ignore „index.html”, zignoruje ten plik?
JohnAndrews

Czy polecenie -t nadal ma zastosowanie? Kiedy go uruchamiam, po prostu dodaje -t i dowolny szablon, który próbuję dodać do pliku ignorowania git
Bynho

50

W systemie Linux / Unix możesz dołączać pliki do pliku .gitignore za pomocą echopolecenia. Na przykład, jeśli chcesz zignorować wszystkie.svn foldery, uruchom to z katalogu głównego projektu:

echo .svn/ >> .gitignore

1
Dowiedziałem się tego tweeta przy użyciu tej składni twitter.com/noodl_io/status/669904872704253953
JohnAndrews

3
W Git Bash w systemie Windows musiałem dodać poprzedzający /i końcowy „\” (aby utworzyć nowy wiersz), na przykład echo /nbproject/project.properties\ >> .gitignorei echo /nbproject/project.xml\ >> .gitignore.
Ryan

15

Masz dwa sposoby ignorowania plików:

  • .gitignorew dowolnym folderze zignoruje pliki określone w pliku dla tego folderu. Używanie symboli wieloznacznych jest możliwe.
  • .git/info/excludeprzechowuje globalny wzorzec ignorowania, podobny do global-ignorespliku konfiguracyjnego in subversions.

6
Zauważ, że wzorce w .gitignorepliku, które nie zawierają „/”, są dopasowywane rekurencyjnie (tj. Również we wszystkich podkatalogach katalogu, w którym .gitignoreznajduje się plik), w przeciwieństwie do svn:ignorewłaściwości katalogu w Subversion.
Jakub Narębski

6

Mam nadzieję, że nie jest za późno.

Jeśli korzystasz z systemu Windows, możesz po prostu wykonać następujące czynności, aby utworzyć plik .gitignore

echo name_of_the_file_you_want_to_ignore.extension > .gitignore

Aby edytować .gitignore , możesz uruchomić

notepad .gitignore

2
Nie używaj tego, jeśli masz już plik .gitignore, nadpisze go! Aby dołączyć plik do zignorowania, użyj tego: echo ignore.ext >>
.gitignore

Masz rację, zaleca się używanie tylko wtedy, gdy plik .gitignore nie istnieje. Lepiej użyć "notatnika .gitignore", jeśli masz plik .gitignore, otworzy go, a jeśli tego nie zrobisz, utworzy go i będziesz mógł dodać wszystkie pliki z notatnika. 1 plik / folder na wiersz
Nesar,

3

Utwórz plik o nazwie .gitignore w katalogu głównym repozytorium. W tym pliku umieszczasz w jednej linii względną ścieżkę do każdego pliku, który chcesz zignorować. Możesz użyć *symbolu wieloznacznego.


2

Korzystając z już udzielonych odpowiedzi, możesz wyrzucić własne git ignorepolecenie za pomocą aliasu . Albo dodaj to do swojego pliku ~ / .gitconfig:

ignore = !sh -c 'echo $1 >> .gitignore' -

Lub uruchom to polecenie z wybranej powłoki (* nix):

git config --global alias.ignore '!sh -c "echo $1 >> .gitignore" -'

Można również utworzyć git excludepolecenie, zastępując ignorez excludeoraz .gitignorez.git/info/exclude wyżej.

(Jeśli nie rozumiesz jeszcze różnicy między tymi dwoma plikami po przeczytaniu odpowiedzi tutaj, zobacz to pytanie ).


1
Odpowiedź tutaj poprawnie rozszerza 1 USD: stackoverflow.com/a/21884533/1465227
Archangel33

2

w przypadku nazw nieobecnych w kopii roboczej lub repozytorium:

echo /globpattern >> .gitignore

lub dla istniejącego pliku (wiersz poleceń typu sh):

echo /$(ls -1 file) >> .gitignore   # I use tab completion to select the file to be ignored  
git rm -r --cached file             # if already checked in, deletes it on next commit

1

Przydatne jest zdefiniowanie pełnego pliku .gitignore dla twojego projektu. Nagrodą jest bezpieczne użycie wygodnej flagi --alllub -ado poleceń takich jak addi commit.

Rozważ także zdefiniowanie globalnego pliku ~ / .gitignore dla powszechnie ignorowanych wzorców, takich jak *~ , który obejmuje pliki tymczasowe utworzone przez Emacsa.


1

W tym celu musisz zainstalować dodatki git. Możesz zainstalować go w Ubuntu za pomocą apt-get,

$ sudo apt-get install git-extras

Następnie możesz użyć polecenia git ignore.

$ git ignore file_name

3
Na komputerze Mac, jeśli masz zainstalowany Homebrew, możesz uruchomić brew install git-extras.
Alex Glover,

0

Możesz także użyć gitignore.io Joe Blau

Albo przez interfejs sieciowy https://www.gitignore.io/

Lub instalując narzędzie CLI, jest to bardzo łatwe i szybkie, po prostu wpisz następujące polecenie w terminalu:

Linux:
echo "function gi() { curl -L -s https://www.gitignore.io/api/\$@ ;}" >> ~/.bashrc && source ~/.bashrc

OSX:
echo "function gi() { curl -L -s https://www.gitignore.io/api/\$@ ;}" >> ~/.bash_profile && source ~/.bash_profile

A potem możesz po prostu wpisać gi po wszystkich elementach platformy / środowiska, dla których potrzebujesz kryteriów gitignore.

Przykład!
Powiedzmy, że pracujesz nad projektem węzła, który zawiera grunt i używasz burzy internetowej w systemie Linux, a następnie możesz wpisać:
gi linux,webstorm,node,grunt > .gitignore(aby utworzyć zupełnie nowy plik)
lub
gi linux,webstorm,node,grunt >> .gitignore (aby dołączyć / dodać nowe reguły do ​​istniejącego pliku )

bam, jesteś gotowy

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.