Jak mogę zignorować katalogi lub foldery w Git, używając msysgit w systemie Windows?
.gitkeep
) do wskazania katalogu, który powinien być przechowywany
/
na końcu wiadomo, że jest to katalog, który powinien zignorować?
Jak mogę zignorować katalogi lub foldery w Git, używając msysgit w systemie Windows?
.gitkeep
) do wskazania katalogu, który powinien być przechowywany
/
na końcu wiadomo, że jest to katalog, który powinien zignorować?
Odpowiedzi:
Utwórz plik o nazwie .gitignore
w katalogu swojego projektu. Zignoruj katalogi, wprowadzając nazwę katalogu do pliku (z dołączonym ukośnikiem):
dir_to_ignore/
Więcej informacji tutaj .
Domyślnie Eksplorator Windows wyświetla się, .gitignore
gdy tak naprawdę jest to nazwa pliku .gitignore.txt
.
Git nie będzie używać .gitignore.txt
Nie można zmienić nazwy pliku na .gitignore
, ponieważ Eksplorator Windows uważa, że jest to plik typu gitignore bez nazwy.
Rozwiązanie inne niż wiersz poleceń:
Możesz zmienić nazwę pliku na „.gitignore”. , i utworzy „.gitignore”
".gitignore"
zapisuje ją bez automatycznego dodawania rozszerzenia.
".gitignore."
- To świetna sztuczka! Zawsze miałem też problemy .htaccess
...
Wydaje się, że do ignorowania plików i katalogów istnieją dwa główne sposoby:
.gitignore
.gitignore
pliku w katalogu głównym repozytorium poza .git
folderem (w systemie Windows upewnij się, że widzisz prawdziwe rozszerzenie pliku, a następnie dodaj .gitignore.
(z punktem na końcu, aby zrobić puste rozszerzenie pliku))~/.gitignore_global
i uruchomienie w git config --global core.excludesfile ~/.gitignore_global
celu dodania tego do konfiguracji GitUwaga: pliki śledzone wcześniej można wyśledzić przez uruchomienie git rm --cached filename
Wyłączenie repozytorium - w przypadku plików lokalnych, które nie muszą być współużytkowane, wystarczy dodać do pliku wzór pliku lub katalog .git/info/exclude
. Te reguły nie są zatwierdzone, więc nie są widoczne dla innych użytkowników . Więcej informacji tutaj .
Aby zrobić wyjątki na liście ignorowanych plików, zobacz to pytanie .
git rm --cached <filename>
. Absolutnie krytyczne dla repozytoriów, które istniały PRZED stworzeniem.gitignore
Miałem pewne problemy utworzeniu pliku w Eksploratorze Windows z .
początku.
Obejściem problemu było przejście do powłoki poleceń i utworzenie nowego pliku za pomocą „edit”.
.
na końcu, aby odkrywca przestał myśleć, że .gitignore
to rozszerzenie. Następnie przy wejściu ta kropka bez rozszerzenia zostaje zjedzona i zostajesz z .gitignore
TL; DR: spróbuj nazwać to .gitignore.
=> .gitignore
Aby poinstruować Git, aby ignorował niektóre pliki lub foldery, musisz utworzyć .gitignore
plik.
Ale w Eksploratorze Windows musisz podać nazwę pliku. Po prostu nie można utworzyć pliku z rozszerzeniem. Sztuczka polega na tym, że utwórz pusty plik tekstowy i przejdź do wiersza polecenia i zmień nazwę pliku na .gitignore
:
ren "New Text Document.txt" .gitignore
Teraz otwórz plik w swoim ulubionym edytorze tekstu i dodaj nazwy plików / folderów, które chcesz zignorować. Można również użyć symboli wieloznacznych, takich jak ten: *.txt
.
type nul > .gitignore
utworzyć pusty plik
.gitignore.
gdy rozszerzenia plików nie są ukryte w Eksploratorze Windows
Jeśli chcesz zachować folder, a nie znajdujące się w nim pliki, po prostu umieść plik „.gitignore” w folderze z „*” jako zawartością. Ten plik spowoduje, że Git zignoruje całą zawartość z repozytorium. Ale .gitignore
zostaną uwzględnione w twoim repozytorium.
$ git add path/to/folder/.gitignore
Jeśli dodasz pusty folder, otrzymasz tę wiadomość (.gitignore to ukryty plik)
The following paths are ignored by one of your .gitignore files:
path/to/folder/.gitignore
Use -f if you really want to add them.
fatal: no files added
Dlatego użyj „-f”, aby wymusić dodanie:
$ git add path/to/folder/.gitignore -f
W systemie Windows istnieje dodatkowy haczyk z ukośnikami. Z wyłączeniem jednego katalogu w .gitignore z
dir_to_exclude /
prawdopodobnie będzie działać, ale z wyłączeniem wszystkich katalogów z
/
powoduje problemy, gdy masz w katalogu nazwy plików ze spacjami (np. my file.txt
): Git Bash unika tych spacji ukośnikiem odwrotnym (jak my\ file.txt
), a Git dla Windows nie rozróżnia między /
i \
.
Aby wykluczyć wszystkie katalogi, lepiej użyj:
** /
Dwie kolejne gwiazdki oznaczają zawartość katalogu.
Również w \.git\info
katalogu projektów znajduje się plik wykluczający, który jest faktycznie tym samym co .gitignore
(myślę). Możesz dodawać pliki i katalogi, aby je zignorować.
Na wypadek, gdybyś musiał wykluczyć podkatalogi, możesz użyć **
symbolu wieloznacznego, aby wykluczyć dowolny poziom podkatalogu.
**/build/output/Debug/
Aby zignorować cały katalog w Git, najprostszym sposobem jest dołączenie pliku .gitignore do katalogu docelowego, który zawiera po prostu „*”.
Ilustrujący przykład
Przykładowy system
/root/
.gitignore
/dirA/
someFile1.txt
someFile2.txt
/dirB/
.gitignore
someFile3.txt
someFile4.txt
Cel
Najwyższy poziom .gitignore (/root/.gitignore)
Zignorowany katalog .gitignore (/root/dirB.gitignore)
I to takie proste :)
Gdy wszystko inne zawiedzie, spróbuj edytować plik
/.git/info/exclude
i dodając katalogi, które chcesz na końcu pliku, w ten sposób:
# git ls-files --others --exclude-from=.git/info/exclude
# Lines that start with '#' are comments.
# For a project mostly in C, the following would be a good set of
# exclude patterns (uncomment them if you want to use them):
# *.[oa]
# *~
assets/
compiled/
Dodałem foldery „zasoby” i „skompilowane” do listy plików i katalogów do zignorowania.
W systemie Unix:
touch .gitignore
W systemie Windows:
echo > .gitignore
Te polecenia wykonane w terminalu utworzą .gitignore
plik w bieżącej lokalizacji.
Następnie po prostu dodaj informacje do tego .gitignore
pliku (na przykład za pomocą Notepad ++), które pliki lub foldery powinny zostać zignorowane. Zapisz swoje zmiany. Otóż to :)
Więcej informacji: .gitignore
Możesz utworzyć plik „.gitignore” z zawartością:
*
!.gitignore
Mi to pasuje.
Mam problemy z pobraniem .gitignore
pliku przez system Git w systemie Windows. $GIT_DIR/info/exclude
Plik zawsze wydaje się działać, choć.
Wadą tego podejścia jest jednak to, że pliki w $GIT_DIR
katalogu nie są uwzględniane przy zameldowaniu, a zatem nie są udostępniane.
ps
$GIT_DIR
to zwykle ukryty folder o nazwie.git
Zakładam, że problem polega na tym, że twoje drzewo robocze wygląda jak:
a-cache/foo
a-cache/index.html
b-cache/bar
b-cache/foo
b-cache/index.html
.gitignore
... z tym, .gitignore
co opisujesz. To da ci git status
wynik jak:
$ git status
# On branch master
# Untracked files:
# (use "git add <file>..." to include in what will be committed)
#
# .gitignore
# a-cache/
# b-cache/
... jeśli te index.html
pliki nie zostały jeszcze dodane do repozytorium. (Git widzi, że w katalogach pamięci podręcznej znajdują się niezauważone pliki, ale zgłasza tylko katalogi). Aby to naprawić, upewnij się, że index.html
pliki zostały dodane i zatwierdzone :
git add *cache/index.html
git commit -m "Adding index.html files to the cache directories"
... a wtedy twój git status
wyglądać będzie następująco:
$ git status
# On branch master
# Untracked files:
# (use "git add <file>..." to include in what will be committed)
#
# .gitignore
nothing added to commit but untracked files present (use "git add" to track)
(Oczywiście, że też chcesz popełnić .gitignore
. Byłem po prostu leniwy w tym przypadku testowym.)
W systemach Windows i Mac, jeśli chcesz zignorować folder o nazwie Flower_Data_Folder w bieżącym katalogu, możesz:
echo Flower_Data_Folder >> .gitignore
Jeśli jest to plik o nazwie data.txt
:
echo data.txt >> .gitignore
Jeśli jest to ścieżka taka jak „Data / passwords.txt”
echo "Data/passwords.txt" >> .gitignore.
Miałem podobne problemy. Pracuję na łańcuchu narzędzi systemu Windows ze współdzielonym repozytorium z facetami z Linuksa i chętnie tworzą pliki o takich samych (z wyjątkiem wielkości liter) nazwach w danym folderze.
Efektem jest to, że mogę sklonować repozytorium i natychmiast mieć dziesiątki „zmodyfikowanych” plików, które, jeśli się zaloguję, spowodują spustoszenie.
W systemie Windows ustawiono rozróżnianie wielkości liter i Git nie ignoruje wielkości liter, ale nadal nie działa (najwyraźniej w wywołaniach interfejsu API Win32).
Jeśli gitignore plików, to muszę pamiętać, aby nie śledzić pliku .gitignore.
Ale znalazłem tutaj dobrą odpowiedź:
http://archive.robwilkerson.org/2010/03/02/git-tip-ignore-changes-to-tracked-files/index.html
Po prostu utwórz .gitignore
plik w folderze projektu, a następnie dodaj w nim nazwę folderu, na przykład:
frontend/node_modules