dlaczego chcesz to zrobić? po prostu zatwierdź zmiany. .gitignorema być częścią twojego repozytorium, wymieniając wzorce plików, które są śmieciami dla projektu.
KurzedMetal
2
.gitignorepowinny być częścią twojego repozytorium, aby wszyscy w twoim zespole ignorowali lub sprawdzali te same pliki. To, że .gitignorejest gdzieś w folderze z kodem, nie oznacza, że musisz go wdrożyć.
można użyć git rm --cached .gitignorei untracking .gitignore
hassanzadeh.sd
Odpowiedzi:
187
Celem .gitignorepliku jest zapobieganie przypadkowemu zatwierdzeniu niektórych typowych plików w projekcie, takich jak wygenerowane pliki pamięci podręcznej, przez każdą osobę współpracującą przy projekcie. Dlatego nie powinieneś ignorować .gitignore, ponieważ ma być uwzględniony w repozytorium.
Jeśli chcesz zignorować pliki tylko w jednym repozytorium, ale chcesz uniknąć zatwierdzania listy ignorowanych (na przykład dla plików osobistych), możesz dodać je do .git/info/excludetego repozytorium.
Jeśli chcesz zignorować określone pliki w każdym repozytorium na twoim komputerze, możesz utworzyć plik, ~/.gitignore_globala następnie uruchomić
Chociaż jest to szczegółowa odpowiedź, nie odpowiada na pytanie. „Nie powinienem” nie oznacza, że nie możesz. W moim przypadku mam dowiązanie symboliczne zawierające plik .gitignore, a teraz, gdy chcę zatwierdzić, git próbuje dołączyć ten plik .gitignore. Wydaje się, że jest to idealne IMO dla przypadków użycia.
xorinzor
Po co skomplikować sprawy, skoro prosta odpowiedź brzmi NIE.
mountainLion
40
.Gitignore może się zignorować, jeśli nigdy nie został zarejestrowany:
mhaase@ubuntu:~$ git --version
git version 1.7.9.5
mhaase@ubuntu:~$ git init temp
Initialized empty Git repository in /home/mhaase/temp/.git/
mhaase@ubuntu:~$ cd temp
mhaase@ubuntu:~/temp$ touch .gitignore foo bar baz bat
mhaase@ubuntu:~/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
mhaase@ubuntu:~/temp$ echo "foo" >> .gitignore
mhaase@ubuntu:~/temp$ echo ".gitignore" >> .gitignore
mhaase@ubuntu:~/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 zarejestrujesz .gitignore (zanim powiesz mu, aby się ignorował), to zawsze pojawi się on w statusie git, nawet jeśli później zmodyfikujesz go tak, aby sam się ignorował.
Dokładnie, to moja sprawa. Chcę mieć lokal .gitignoredo pracy, z git-svnktórym nikt nie powinien widzieć. Więc po prostu dodałem to do siebie i po prostu zadziałało. Ale potem poszukałem w Google, żeby zobaczyć, czy jakieś spięte osoby wytłumaczą innym, jak to jest „złe”. Ta odpowiedź powinna zostać przyjęta, a następnie głosowałbym .git/info/excluderównież za sugestiami. Więc to musi być po prostu niezauważone ... Nie jest to zbyt zaskakujące, przynajmniej jeśli kiedykolwiek zostałeś "obalony" (svn).
Tomasz Gandor
2
.gitignoreNajpierw mam plik z kopią zapasową. Następnie używam git rm .gitignorei dokonuję tej zmiany. Na koniec dodaj i .gitignoreponownie zatwierdź plik z regułą dla .gitignore. To działa!
qzhang
5
Aby to naprawić, możesz uruchomić git rm --cached .gitignore.
Gideon,
21
Naprawdę nie ma dobrego powodu, aby to robić. Jeśli chcesz, aby pliki były ignorowane tylko dla twojego klona , dodaj je do .git/info/exclude, a nie do .gitignorepliku.
Otrzymuję komunikat „Nie można ukończyć operacji z powodu istniejących zmian w następującym pliku”, a plik, który zawiera, zawiera ten, który mam wykluczyć. Każdy pomysł, dlaczego?
Paul McCarthy
4
Po wprowadzeniu .gitignorepliku gitignore spróbuj wykonać następujące czynności:
Powinno działać, chociaż jak już wspomniano, ignorowanie gitignore może przynieść efekt przeciwny do zamierzonego, jeśli repozytorium jest udostępniane przez wielu użytkowników.
Tak, możesz; 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 znajdują się w .gitignore. Więc po prostu go wyśledzić .
Ale dlaczego nie zatwierdzić lub zresetować zmian, które na nim masz? To znacznie lepszy sposób na usunięcie go ze statusu ... Należy również pamiętać, że każdy nowy klon repozytorium będzie musiał dodać jego .gitignore, co może być denerwujące.
.gitignore
ma być częścią twojego repozytorium, wymieniając wzorce plików, które są śmieciami dla projektu..gitignore
powinny być częścią twojego repozytorium, aby wszyscy w twoim zespole ignorowali lub sprawdzali te same pliki. To, że.gitignore
jest gdzieś w folderze z kodem, nie oznacza, że musisz go wdrożyć.git rm --cached .gitignore
i untracking .gitignoreOdpowiedzi:
Celem
.gitignore
pliku jest zapobieganie przypadkowemu zatwierdzeniu niektórych typowych plików w projekcie, takich jak wygenerowane pliki pamięci podręcznej, przez każdą osobę współpracującą przy projekcie. Dlatego nie powinieneś ignorować.gitignore
, ponieważ ma być uwzględniony w repozytorium.Jeśli chcesz zignorować pliki tylko w jednym repozytorium, ale chcesz uniknąć zatwierdzania listy ignorowanych (na przykład dla plików osobistych), możesz dodać je do
.git/info/exclude
tego repozytorium.Jeśli chcesz zignorować określone pliki w każdym repozytorium na twoim komputerze, możesz utworzyć plik,
~/.gitignore_global
a następnie uruchomićźródło
.Gitignore może się zignorować, jeśli nigdy nie został zarejestrowany:
Jeśli zarejestrujesz .gitignore (zanim powiesz mu, aby się ignorował), to zawsze pojawi się on w statusie git, nawet jeśli później zmodyfikujesz go tak, aby sam się ignorował.
źródło
.gitignore
do pracy, zgit-svn
którym nikt nie powinien widzieć. Więc po prostu dodałem to do siebie i po prostu zadziałało. Ale potem poszukałem w Google, żeby zobaczyć, czy jakieś spięte osoby wytłumaczą innym, jak to jest „złe”. Ta odpowiedź powinna zostać przyjęta, a następnie głosowałbym.git/info/exclude
również za sugestiami. Więc to musi być po prostu niezauważone ... Nie jest to zbyt zaskakujące, przynajmniej jeśli kiedykolwiek zostałeś "obalony" (svn)..gitignore
Najpierw mam plik z kopią zapasową. Następnie używamgit rm .gitignore
i dokonuję tej zmiany. Na koniec dodaj i.gitignore
ponownie zatwierdź plik z regułą dla.gitignore
. To działa!git rm --cached .gitignore
.Naprawdę nie ma dobrego powodu, aby to robić. Jeśli chcesz, aby pliki były ignorowane tylko dla twojego klona , dodaj je do
.git/info/exclude
, a nie do.gitignore
pliku.źródło
Po wprowadzeniu
.gitignore
pliku gitignore spróbuj wykonać następujące czynności:Powinno działać, chociaż jak już wspomniano, ignorowanie gitignore może przynieść efekt przeciwny do zamierzonego, jeśli repozytorium jest udostępniane przez wielu użytkowników.
źródło
Tak, możesz; 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 znajdują się w .gitignore. Więc po prostu go wyśledzić .
Ale dlaczego nie zatwierdzić lub zresetować zmian, które na nim masz? To znacznie lepszy sposób na usunięcie go ze statusu ... Należy również pamiętać, że każdy nowy klon repozytorium będzie musiał dodać jego
.gitignore
, co może być denerwujące.źródło
got rm --cached .gitignore
prawdopodobnie będziesz musiał usunąć go oddzielnie z git przez .