Problem polega na tym, że .gitignoreignoruje tylko pliki, które nie były wcześniej śledzone git add. Uruchom, git reset name_of_fileaby cofnąć scenę pliku i zachować go. Jeśli chcesz również usunąć dany plik z repozytorium (po wypchnięciu), użyj git rm --cached name_of_file.
Polecenie git rm --cached name_of_fileusunie plik z repozytorium git. Nawet jeśli dodasz go do pliku .gitignore. To nie jest ignorowanie, że usuwa.
OrwellHindenberg
4
Co wydaje się być tym, czego OP chciał w tym przypadku.
Ondrej Slinták
40
Cieszę się, że Twoje rozwiązanie zadziałało na @ Kohan95! Chociaż nazwa tego pytania powinna zostać zmieniona na podstawie wybranej odpowiedzi. Moje komentarze są tylko ostrzeżeniem dla deweloperów, którzy mogą nie wiedzieć, co robi polecenie.
OrwellHindenberg
91
git reset name_of_fileusuwa śledzenie i nie usuwa pliku.
Cees Timmerman,
7
Próbowałem git rm --cached <nazwa_pliku> Usunął plik z repozytorium, ale ponieważ był w pliku .gitignore, lokalna kopia nie została usunięta. Jako kolejną uwagę, aby dodać katalog, musisz wstawić go z ukośnikiem „/”. Usuwałem katalog config Rubymine w projekcie ruby, w którym ktoś się zameldował, czyli „.idea”. W pliku umieścić „.idea /”, a następnie «git rm --cached -r .idea», aby usunąć katalog i wszystko pod nim (bo git tylko wersje plików, a nie katalogi.)
Doug Noel
222
Jak zignorować nowe pliki
Globalnie
Dodaj ścieżki do pliku (plików), które chcesz zignorować .gitignore(i zatwierdź). Te wpisy pliku będą miały również zastosowanie do innych osób sprawdzających repozytorium.
Lokalnie
Dodaj ścieżki do pliku, które chcesz zignorować w swoim .git/info/excludepliku. Te wpisy pliku będą miały zastosowanie tylko do lokalnej kopii roboczej.
Jak zignorować zmienione pliki (tymczasowo)
Aby zignorować zmienione pliki, aby były wyświetlane jako zmodyfikowane, możesz użyć następującego polecenia git:
git update-index --assume-unchanged <file>
Aby przywrócić tę ignorancję, użyj następującego polecenia:
Idealny do zapobiegania wypychaniu pliku zawierającego aktualny klucz API do github!
Jim In Texas
1
@Xman Dlaczego powiedziałeś, że to tymczasowo? Zrobiłem kroki, które wspomniałeś dla localgit ignore, i zrestartowałem system, nadal pokazuje działanie bezpośrednio czyste.
Vivek Vardhan
1
Dzięki za przydatną update-indexsztuczkę, absolutnie idealną, aby uniknąć zmiany .gitignorepliku, który jest następnie śledzony przez Git!
Thomas P.
@mcbjam Nie ma specjalnego polecenia git ignore. Edytuj plik .gitignore znajdujący się w odpowiednim miejscu w kopii roboczej. Następnie powinieneś dodać ten .gitignore i zatwierdzić. Każdy, kto klonuje repozytorium, zignoruje te pliki.
Xman Classical
@Vivek Vardhan git update-index --assume-niezmieniony jest jak tymczasowa maska indeksu. Będzie obowiązywać, dopóki go nie wyłączysz. Aby wyjaśnić moją kwestię, indeks początkowo (to znaczy zaraz po drzewie odczytu git) „zawiera” wszystkie pliki z drzewa, które właśnie zostały wczytane. Dlatego Git „przymyka oczy”, aby wpis indeksu nie jest równoznaczny z jego usunięciem.
Xman Classical
150
Dodaj następujący wiersz do .gitignore:
/Hello.class
Wyklucza to Hello.class z git. Jeśli już to zrobiłeś, uruchom następującą komendę:
git rm Hello.class
Jeśli chcesz wykluczyć wszystkie pliki klas z git, dodaj następujący wiersz do .gitignore:
Dodanie Hello.classdo .gitignorezignoruje każdy plik wywołany Hello.classw dowolnym podkatalogu. Jeśli zamierzasz zignorować plik tylko Hello.classw tym samym katalogu, co .gitignoreplik, użyj /Hello.classzamiast tego wiersza.
nim
Gdzie umieścisz .gitignoreplik?
CodyBugstein
6
@Imray możesz umieścić w .gitignoredowolnym miejscu projektu git - jeśli ścieżka zaczyna się od /, będzie względna do położenia .gitignorepliku; w przeciwnym razie będzie rekurencyjnie odwoływał się do plików w bieżącym katalogu i jego katalogach potomnych.
Armand
109
1) Utwórz .gitignoreplik. Aby to zrobić, wystarczy utworzyć .txtplik i zmienić rozszerzenie w następujący sposób:
Następnie musisz zmienić nazwę, wpisując następujący wiersz w oknie cmd:
rename git.txt .gitignore
Gdzie git.txtjest nazwa właśnie utworzonego pliku.
Następnie możesz otworzyć plik i zapisać w repozytorium wszystkie pliki, których nie chcesz dodawać. Na przykład mój wygląda następująco:
Możesz użyć polecenia „kopiuj con .gitignore” w wierszu polecenia, a następnie naciśnij CTRL + Z, aby bezpośrednio utworzyć plik bez Eksploratora Windows.
Chciałbym, aby to było na szczycie tabeli jako rozwiązanie problemu .... Jest bardzo prosty i elegancki
user1457958
„Jest bardzo prosty i elegancki” - niezupełnie : „Nie zakładaj, że nie zmienił się w przypadku mechanizmu ignorowania. Jest to „Wiem, że moje działania systemu plików są powolne. Ja obiecuję Git, że nie będzie zmienić te ścieżki ...” Zwłaszcza, że to nie obietnica ... że Git będzie zawsze brać pod uwagę te ścieżki są niezmodyfikowanej Git-jeśli można określić ścieżkę ... zmieniła się bez ponoszenia dodatkowych lstat(2)kosztów, to zastrzega sobie prawo zgłosić, że droga została zmodyfikowana (... git commit -ama prawo popełnić że zmiana) „.
Chris
47
Możesz użyć poniższych metod ignorowania / nie ignorowania zmian w śledzonych plikach.
Za ignorowanie: git update-index --assume-unchanged <file>
Aby przywrócić zignorowane pliki: git update-index --no-assume-unchanged <file>
Czy to dotyczy wszystkich plików? Nie jest jasne, w jaki sposób te polecenia można zastosować do pojedynczego pliku, aby go zignorować / anulować.
javadba
@kapil w końcu !! coś, co faktycznie działa wśród trylionów wariantów poleceń git! Próbowałem każdej odpowiedzi, aby zignorować niektóre głupie pliki build.xml, które pojawiały się po każdej kompilacji ... dziękuję!
killjoy
1
Proszę nie : „Zakładaj, że niezmieniony nie powinien być nadużywany jako mechanizm ignorowania. Jest to „Wiem, że moje działania systemu plików są powolne. Ja obiecuję Git, że nie będzie zmienić te ścieżki ...” Zwłaszcza, że to nie obietnica ... że Git będzie zawsze brać pod uwagę te ścieżki są niezmodyfikowanej Git-jeśli można określić ścieżkę ... zmieniła się bez ponoszenia dodatkowych lstat(2)kosztów, to zastrzega sobie prawo zgłosić, że droga została zmodyfikowana (... git commit -ama prawo popełnić że zmiana) „.
Chris
22
Utwórz .gitignorew katalogu, w którym znajduje się .git. Możesz wyświetlić listę plików oddzielonych znakiem nowej linii. Możesz także używać symboli wieloznacznych:
Dobrą praktyką jest unikanie umieszczania wzorców specyficznych dla narzędzi (tj. Tymczasowych plików Vima) w .gitignoreplikach (chyba że projekt nakazuje to narzędzie). Możesz umieszczać wzory dla swoich ulubionych narzędzi w pliku wykluczającym na użytkownika (zestaw core.excludesFile); będą działać we wszystkich twoich repozytoriach. Np. git config --global core.excludesFile "$HOME/.git-user-excludes"Następnie umieść je w tym pliku.
Chris Johnsen
@Chris: Dzięki za wskazówkę. Ale właśnie tam napisałem, bo nic lepszego nie przyszło mi do głowy :)
zakończenie
1
@ChrisJohnsen „narzędzie specyficzne?” dla vima? myślę, że można bezpiecznie wykluczyć pliki wymiany vim ..
javadba
16
Z oficjalnej strony GitHub:
Jeśli plik jest już zalogowany i chcesz go zignorować, Git nie zignoruje pliku, jeśli dodasz regułę później. W takich przypadkach należy najpierw wyśledzić plik, uruchamiając w terminalu następującą komendę:
Jeśli plik został już zatwierdzony i próbujesz go zignorować, dodając do .gitignorepliku, Git go nie zignoruje. W tym celu musisz najpierw wykonać następujące czynności:
git rm --cached FILENAME
Jeśli zaczynasz projekt świeżo i chcesz dodać niektóre pliki do Git ignore, wykonaj poniższe kroki, aby utworzyć plik Git ignore:
Przejdź do repozytorium Git.
Wpisz „touch .gitignore”, który utworzy .gitignoreplik.
Możesz także użyć .gitattributes (zamiast .gitignore), aby wykluczyć całe typy plików. Plik jest dość zrozumiały, ale wklejam tutaj zawartość w celach informacyjnych. Zwróć uwagę na ostatni wiersz (* .class binarny):
# Denote all files that are truly binary and should not be modified.
*.png binary
*.jpg binary
*.gif binary
*.ico binary
*.mo binary
*.pdf binary
*.phar binary
*.class binary
Ta strona może być przydatna i oszczędzać czas podczas pracy .gitignore.
Automatycznie generuje pliki .gitignore dla różnych IDE i systemów operacyjnych z określonymi plikami / folderami, których zwykle nie chcesz pobierać do repozytorium Git (na przykład foldery specyficzne dla IDE i pliki konfiguracyjne).
podobnie możemy dodać katalog i wszystkie jego podkatalogi / pliki, które chcemy zignorować w statusie git za pomocą directoryname/*i wykonałem to polecenie z srckatalogu.
Próbowałem --assume-unchangedi również, .gitignoreale żaden z nich nie działał dobrze. Utrudniają zmianę gałęzi i łączenie zmian od innych. To jest moje rozwiązanie:
Po zatwierdzeniu ręcznie usuwam pliki z listy zmian
Zanim ciągnąć , ja schować zmienione pliki. A po pociągnięciu robię stash pop .
git skrytka
git pull
git stash pop
Krok 3 czasami wyzwala scalenie i może doprowadzić do konfliktu, który musisz rozwiązać, co jest dobrą rzeczą.
Pozwala mi to zachować lokalne zmiany, które nie są udostępniane innym członkom zespołu.
Odpowiedzi:
Problem polega na tym, że
.gitignore
ignoruje tylko pliki, które nie były wcześniej śledzonegit add
. Uruchom,git reset name_of_file
aby cofnąć scenę pliku i zachować go. Jeśli chcesz również usunąć dany plik z repozytorium (po wypchnięciu), użyjgit rm --cached name_of_file
.źródło
git rm --cached name_of_file
usunie plik z repozytorium git. Nawet jeśli dodasz go do pliku .gitignore. To nie jest ignorowanie, że usuwa.git reset name_of_file
usuwa śledzenie i nie usuwa pliku.Jak zignorować nowe pliki
Globalnie
Dodaj ścieżki do pliku (plików), które chcesz zignorować
.gitignore
(i zatwierdź). Te wpisy pliku będą miały również zastosowanie do innych osób sprawdzających repozytorium.Lokalnie
Dodaj ścieżki do pliku, które chcesz zignorować w swoim
.git/info/exclude
pliku. Te wpisy pliku będą miały zastosowanie tylko do lokalnej kopii roboczej.Jak zignorować zmienione pliki (tymczasowo)
Aby zignorować zmienione pliki, aby były wyświetlane jako zmodyfikowane, możesz użyć następującego polecenia git:
Aby przywrócić tę ignorancję, użyj następującego polecenia:
źródło
local
git ignore, i zrestartowałem system, nadal pokazuje działanie bezpośrednio czyste.update-index
sztuczkę, absolutnie idealną, aby uniknąć zmiany.gitignore
pliku, który jest następnie śledzony przez Git!Dodaj następujący wiersz do .gitignore:
Wyklucza to Hello.class z git. Jeśli już to zrobiłeś, uruchom następującą komendę:
Jeśli chcesz wykluczyć wszystkie pliki klas z git, dodaj następujący wiersz do .gitignore:
źródło
Hello.class
do.gitignore
zignoruje każdy plik wywołanyHello.class
w dowolnym podkatalogu. Jeśli zamierzasz zignorować plik tylkoHello.class
w tym samym katalogu, co.gitignore
plik, użyj/Hello.class
zamiast tego wiersza..gitignore
plik?.gitignore
dowolnym miejscu projektu git - jeśli ścieżka zaczyna się od/
, będzie względna do położenia.gitignore
pliku; w przeciwnym razie będzie rekurencyjnie odwoływał się do plików w bieżącym katalogu i jego katalogach potomnych.1) Utwórz
.gitignore
plik. Aby to zrobić, wystarczy utworzyć.txt
plik i zmienić rozszerzenie w następujący sposób:Następnie musisz zmienić nazwę, wpisując następujący wiersz w oknie cmd:
Gdzie
git.txt
jest nazwa właśnie utworzonego pliku.Następnie możesz otworzyć plik i zapisać w repozytorium wszystkie pliki, których nie chcesz dodawać. Na przykład mój wygląda następująco:
Gdy to zrobisz, musisz dodać go do swojego repozytorium Git. Musisz zapisać plik, w którym znajduje się twoje repozytorium.
Następnie w Git Bash musisz napisać następujący wiersz:
Jeśli repozytorium już istnieje, musisz wykonać następujące czynności:
git rm -r --cached .
git add .
git commit -m ".gitignore is now working"
Jeśli krok 2 nie działa, powinieneś napisać całą trasę plików, które chcesz dodać.
źródło
Ignorować:
Aby cofnąć ignorowanie:
źródło
lstat(2)
kosztów, to zastrzega sobie prawo zgłosić, że droga została zmodyfikowana (...git commit -a
ma prawo popełnić że zmiana) „.Możesz użyć poniższych metod ignorowania / nie ignorowania zmian w śledzonych plikach.
git update-index --assume-unchanged <file>
git update-index --no-assume-unchanged <file>
źródło
lstat(2)
kosztów, to zastrzega sobie prawo zgłosić, że droga została zmodyfikowana (...git commit -a
ma prawo popełnić że zmiana) „.Utwórz
.gitignore
w katalogu, w którym znajduje się .git. Możesz wyświetlić listę plików oddzielonych znakiem nowej linii. Możesz także używać symboli wieloznacznych:źródło
.gitignore
plikach (chyba że projekt nakazuje to narzędzie). Możesz umieszczać wzory dla swoich ulubionych narzędzi w pliku wykluczającym na użytkownika (zestawcore.excludesFile
); będą działać we wszystkich twoich repozytoriach. Np.git config --global core.excludesFile "$HOME/.git-user-excludes"
Następnie umieść je w tym pliku.Z oficjalnej strony GitHub:
Jeśli plik jest już zalogowany i chcesz go zignorować, Git nie zignoruje pliku, jeśli dodasz regułę później. W takich przypadkach należy najpierw wyśledzić plik, uruchamiając w terminalu następującą komendę:
lub
źródło
Powinieneś napisać coś takiego
do twojego
.gitignore
pliku.źródło
*.class
do swojego.gitignore
dokonać git ignorować wszystkie pliki kończące się na.class
.Dodaj do pliku, które chcesz zignorować
.gitignore
:*.klasa
*.projektowanie
* .prefs
*.projekt
źródło
Tworząc plik .gitignore. Zobacz szczegóły: Git Book - Ignorowanie plików
Zobacz też: Jak sprawić, by Git ignorował pliki bez używania .gitignore?
źródło
Jeśli plik został już zatwierdzony i próbujesz go zignorować, dodając do
.gitignore
pliku, Git go nie zignoruje. W tym celu musisz najpierw wykonać następujące czynności:Jeśli zaczynasz projekt świeżo i chcesz dodać niektóre pliki do Git ignore, wykonaj poniższe kroki, aby utworzyć plik Git ignore:
.gitignore
plik.źródło
Możesz także użyć .gitattributes (zamiast .gitignore), aby wykluczyć całe typy plików. Plik jest dość zrozumiały, ale wklejam tutaj zawartość w celach informacyjnych. Zwróć uwagę na ostatni wiersz (* .class binarny):
źródło
Dodaj następujący wiersz do .git / info / exclude:
Hello.class
źródło
.git
?Miałem podobny problem z plikiem „dump.rdb”.
Próbowałem dodać ten plik na różne sposoby do pliku .gitignore, ale działał tylko jeden sposób.
UWAGA: Dodanie pliku w innym miejscu nie działało.
Na przykład patrz: https://gitlab.com/gitlab-org/gitlab-ce/raw/b3ad3f202478dd88a3cfe4461703bc3df1019f90/.gitignore
źródło
Ta strona może być przydatna i oszczędzać czas podczas pracy
.gitignore
.Automatycznie generuje pliki .gitignore dla różnych IDE i systemów operacyjnych z określonymi plikami / folderami, których zwykle nie chcesz pobierać do repozytorium Git (na przykład foldery specyficzne dla IDE i pliki konfiguracyjne).
źródło
Próbowałem tego -
git status .idea/xyz.xml .idea/pqr.iml Output .DS_Store
echo " .idea/xyz.xml .idea/pqr.iml Output .DS_Store" >> .gitignore
git status .gitignore
podobnie możemy dodać katalog i wszystkie jego podkatalogi / pliki, które chcemy zignorować w statusie git za pomocą
directoryname/*
i wykonałem to polecenie zsrc
katalogu.źródło
git rm -r --cached .
git add .
źródło
Próbowałem
--assume-unchanged
i również,.gitignore
ale żaden z nich nie działał dobrze. Utrudniają zmianę gałęzi i łączenie zmian od innych. To jest moje rozwiązanie:Po zatwierdzeniu ręcznie usuwam pliki z listy zmian
Zanim ciągnąć , ja schować zmienione pliki. A po pociągnięciu robię stash pop .
Krok 3 czasami wyzwala scalenie i może doprowadzić do konfliktu, który musisz rozwiązać, co jest dobrą rzeczą.
Pozwala mi to zachować lokalne zmiany, które nie są udostępniane innym członkom zespołu.
źródło