2012-04-16 17 views
55

Czy istnieje możliwość dodania pliku .gitignore do samego siebie .gitignore?Dodaj .gitignore do gitignore

.gitignore 

Nie działa chociaż

nie chcę, aby zobaczyć go w edytowanych plików

+3

dlaczego chcesz to zrobić? po prostu zatwierdz zmiany. '.gitignore' ma być częścią twojego repozytorium, podając wzory plików, które są śmieciowe dla projektu. – KurzedMetal

+1

'.gitignore' powinien być częścią twojego repozytorium, tak aby wszyscy członkowie twojego zespołu ignorowali lub sprawdzali w tych samych plikach. To, że '.gitignore' znajduje się gdzieś w twoich folderach kodu, nie oznacza, że ​​musisz go wdrożyć. –

+0

możliwy duplikat [Jak powiedzieć Git, aby zignorować ".gitignore"?] (Http://stackoverflow.com/questions/767147/how-do-i-tell-git-to-ignore-gitignore) –

Odpowiedz

83

. Plik .gitignore ma uniemożliwić wszystkim współpracownikom w projekcie zawarcie w projekcie niektórych popularnych plików, takich jak wygenerowane pliki pamięci podręcznej. Dlatego nie należy ignorować wartości .gitignore, ponieważ jej celem jest uwzględnienie w repozytorium.

Jeśli chcesz zignorować pliki tylko w jednym repo, ale bez zatwierdzania listy ignorowanych, możesz dodać je do .git/info/exclude w tym repozytorium.

Jeśli chcesz zignorować niektóre pliki na każdym repo na komputerze można utworzyć plik ~/.gitignore_global a następnie uruchomić

git config --global core.excludesfile ~/.gitignore_global 
1

Tak można; nadal widzisz go w edytowanych plikach, ponieważ nadal jest śledzony przez git, a pliki śledzone przez git są zawsze oznaczane jako zmodyfikowane, nawet jeśli są w .gitignore. Tak po prostu untrack to.

Ale dlaczego nie popełnić lub zresetować zmian, które masz na nim? To znacznie lepszy sposób na usunięcie go ze statusu ... Pamiętaj też, że każdy nowy klon twojego repo będzie musiał dodać jego .gitignore, co może być denerwujące.

+0

Tak, i będziesz musiał usunąć go oddzielnie od git przez 'get rm --cached .gitignore', prawdopodobnie. – Tadeck

+0

git rm --cached .gitignore usuwa z git. To jest destrukcyjne i niepożądane. Jak po prostu mieć .gitignore zignorowany dla lokalnego klona? – javadba

11

Nie ma naprawdę dobrego powodu, aby to zrobić. Jeśli chcesz, aby pliki były ignorowane tylko dla Twojego klonu, dodaj je do pliku .git/info/exclude, a nie do .gitignore

16

.gitignore może ignorować sobie jeśli nigdy nie zostały sprawdzone w:

[email protected]:~$ git --version 
git version 1.7.9.5 
[email protected]:~$ git init temp 
Initialized empty Git repository in /home/mhaase/temp/.git/ 
[email protected]:~$ cd temp 
[email protected]:~/temp$ touch .gitignore foo bar baz bat 
[email protected]:~/temp$ git status 
# On branch master 
# 
# Initial commit 
# 
# Untracked files: 
# (use "git add <file>..." to include in what will be committed) 
# 
#  .gitignore 
#  bar 
#  bat 
#  baz 
#  foo 
[email protected]:~/temp$ echo "foo" >> .gitignore 
[email protected]:~/temp$ echo ".gitignore" >> .gitignore 
[email protected]:~/temp$ git status 
# On branch master 
# 
# Initial commit 
# 
# Untracked files: 
# (use "git add <file>..." to include in what will be committed) 
# 
#  bar 
#  bat 
#  baz 
nothing added to commit but untracked files present (use "git add" to track) 

Jeśli zaznaczysz .gitignore (zanim poprosisz o zignorowanie samego siebie), zawsze pojawi się on w statusie git, nawet jeśli później zmodyfikujesz go tak, by sam się ignorował.

+0

Dokładnie, to jest mój przypadek. Chcę mieć lokalny '.gitignore' do pracy z' git-svn', którego nikt nie powinien widzieć. Więc dodałem to do siebie i po prostu zadziałało. Ale potem szukałem w Google informacji, czy ci spięci ludzie wyjaśnią innym, jak to jest "złe". Ta odpowiedź powinna zostać zaakceptowana, a następnie przejęłbym również sugestie ".git/info/exclude". Więc to musi być po prostu nieskrępowane ... Niezbyt zaskakujące, przynajmniej jeśli kiedykolwiek byłeś "obrócony" (svn). –

+0

Mam najpierw plik '.gitignore'. Następnie używam 'git rm .gitignore' i zatwierdzam tę zmianę. Na koniec dodaj i ponownie zatwierdz plik '.gitignore' z regułą dla' .gitignore'. To działa! – qzhang