Próbuję użyć .gitignore
pliku do wykluczenia templates.js
znajdującego się w public/app/
folderze. Mój .gitignore
plik wygląda następująco:
/vendor
/node_modules
composer.phar
composer.lock
.DS_Store
templates.js
Ale kiedy sprawdzam Git Gui, templates.js
plik jest nadal w nim wyświetlany. Jak mogę konkretnie wykluczyć plik za pomocą .gitignore
?
.gitignore
ignoruje tylko treść do dodania..gitignore
prawidłowy?Odpowiedzi:
W przeciwieństwie do tego, co może sugerować nazwa „ignoruj”.
.gitignore
jest konsultowany tylko podczas tworzeniagit add
plików: innymi słowy, plik już dodany do (indeksu) repozytorium nie zostanie wykluczony na podstawie rozszerzenia.gitignore
.Najpierw lepiej zmodyfikuj
.gitignore
tak, aby plik nie był już dodawany. Dodaj następujący wiersz do.gitignore
pliku:Następnie musisz wykluczyć plik z repozytorium. Prawdopodobnie nie chcesz usuwać pliku z systemu plików, możesz to zrobić za pomocą:
--cached
Flagi zapewnia, że plik nie zostanie usunięty z systemu plików. (Jeśli nie jest to ważne, możesz użyćgit rm public/app/template.js
, ale spowoduje to usunięcie pliku ).tło
Przyczyną
.gitignore
nieużywanego proaktywnie jest to, że czasami możesz chcieć zastąpić.gitignore
. Załóżmy na przykład, że nie chcesz śledzić*.log
plików, możesz określić*.log
w pliku.gitignore
. Ale jeśli istnieje konkretny, który chcesz śledzić, możesz go dodaćgit add -f some.log
. Te-f
siły flaggit
, aby dodać plik.źródło
Po jednokrotnym „dodaniu” pliku do repozytorium git, będzie on nadal śledzony, niezależnie od tego, czy jest wymieniony w pliku .gitignore.
Domyślam się, że wcześniej dodałeś plik template.js, w takim przypadku zmiany będą śledzone, dopóki nie usuniesz go z repozytorium. Gdy plik zostanie usunięty z repozytorium, zostanie poprawnie zignorowany przez plik .gitignore.
Sposobem na usunięcie pliku z repozytorium git (wiersz poleceń) bez usuwania jest
Kiedy już to zrobisz i spróbujesz zatwierdzić plik w swoim gitignore, to tego nie zrobi.
Zauważ, że jeśli specjalnie dodasz plik, który masz w swoim gitignore, ręczne dodanie tego pliku nadpisuje gitignore.
źródło
Jeśli już śledzisz plik (
git add
na nim igit commit
),.gitignore
nie pomoże.Uważam, że chcesz zatrzymać śledzenie pliku, a następnie użyć go,
.gitignore
aby go wykluczyć. Aby zatrzymać śledzenie pliku, ale go zachować, użyj:git rm --cached <file>
źródło
W takim przypadku możesz zatrzymać śledzenie za
templates.js
pomocąJak wyjaśnili inni,
.gitignore
ignoruje tylko zawartość do dodania. Na przykład, jeśli często używaszgit add .
i masztemplates.js
w swoim.gitignore
, git go nie doda.źródło