Jak mogę zignorować .pycpliki w git?
Jeśli to włożę, .gitignoreto nie działa. Potrzebuję, aby nie były śledzone i nie były sprawdzane pod kątem zatwierdzeń.
Jak mogę zignorować .pycpliki w git?
Jeśli to włożę, .gitignoreto nie działa. Potrzebuję, aby nie były śledzone i nie były sprawdzane pod kątem zatwierdzeń.
Odpowiedzi:
Włóż to .gitignore. Ale ze strony podręcznika gitignore(5):
· If the pattern does not contain a slash /, git treats it as a shell glob pattern and checks for a match against the pathname relative to the location of the .gitignore file (relative to the toplevel of the work tree if not from a .gitignore file). · Otherwise, git treats the pattern as a shell glob suitable for consumption by fnmatch(3) with the FNM_PATHNAME flag: wildcards in the pattern will not match a / in the pathname. For example, "Documentation/*.html" matches "Documentation/git.html" but not "Documentation/ppc/ppc.html" or "tools/perf/Documentation/perf.html".
Zatem podaj pełną ścieżkę do odpowiedniego *.pycwpisu lub umieść go w .gitignorepliku w dowolnym katalogu prowadzącym z katalogu głównego repozytorium (włącznie).
Powinieneś dodać linię z:
*.pyc
do .gitignorepliku w folderze głównym drzewa repozytorium git zaraz po inicjalizacji repozytorium.
Jak powiedział ralphtheninja , jeśli zapomniałeś to zrobić wcześniej, jeśli po prostu dodasz linię do .gitignorepliku, wszystkie wcześniej zatwierdzone .pycpliki będą nadal śledzone, więc będziesz musiał usunąć je z repozytorium.
Jeśli korzystasz z systemu Linux (lub „rodziców i synów”, takich jak MacOSX), możesz to szybko zrobić za pomocą tego jednego wiersza polecenia, które musisz wykonać z katalogu głównego repozytorium:
find . -name "*.pyc" -exec git rm -f "{}" \;
To po prostu oznacza:
zaczynając od katalogu, w którym aktualnie jestem, znajdź wszystkie pliki, których nazwa kończy się rozszerzeniem
.pyc, i przekaż nazwę pliku do poleceniagit rm -f
Po *.pycusunięciu plików z gita jako plików śledzonych, zatwierdź tę zmianę w repozytorium, a następnie możesz ostatecznie dodać *.pyclinię do .gitignorepliku.
(na podstawie http://yuji.wordpress.com/2010/10/29/git-remove-all-pyc/ )
Prawdopodobnie dodaje je do repozytorium przed wprowadzeniem *.pycw .gitignore.
Najpierw usuń je z repozytorium.
próbuję użyć zdania z poprzedniego postu i nie działam rekurencyjnie, potem przeczytaj pomoc i uzyskaj tę linię:
find . -name "*.pyc" -exec git rm -f "{}" \;
pd jest konieczne, aby dodać * .pyc do pliku .gitignore, aby utrzymać git w czystości
echo "*.pyc" >> .gitignore
Cieszyć się.
Jeśli chcesz globalnie ignorować pliki '.pyc' (tj. Jeśli nie chcesz dodawać linii do pliku .gitignore w każdym katalogu git), spróbuj wykonać następujące czynności:
$ cat ~/.gitconfig
[core]
excludesFile = ~/.gitignore
$ cat ~/.gitignore
**/*.pyc
[Źródła]
https://git-scm.com/docs/gitignore
Wzorce, które użytkownik chce, aby Git ignorował we wszystkich sytuacjach (np. Kopie zapasowe lub pliki tymczasowe generowane przez wybrany edytor użytkownika) zazwyczaj trafiają do pliku określonego przez core.excludesFile w pliku ~ / .gitconfig użytkownika.
Początkowe „**”, po którym następuje ukośnik, oznacza dopasowanie we wszystkich katalogach. Na przykład „** / foo” dopasowuje plik lub katalog „foo” w dowolnym miejscu, tak samo jak wzorzec „foo”. „** / foo / bar” dopasowuje plik lub katalog „bar” gdziekolwiek bezpośrednio w katalogu „foo”.
Dzięki @Enrico za odpowiedź.
Zwróć uwagę, że jeśli używasz virtualenv, będziesz mieć kilka dodatkowych .pycplików w katalogu, w którym aktualnie się znajdujesz, które zostaną przechwycone przez jego polecenie find.
Na przykład:
./app.pyc
./lib/python2.7/_weakrefset.pyc
./lib/python2.7/abc.pyc
./lib/python2.7/codecs.pyc
./lib/python2.7/copy_reg.pyc
./lib/python2.7/site-packages/alembic/__init__.pyc
./lib/python2.7/site-packages/alembic/autogenerate/__init__.pyc
./lib/python2.7/site-packages/alembic/autogenerate/api.pyc
Przypuszczam, że usunięcie wszystkich plików jest nieszkodliwe, ale jeśli chcesz usunąć tylko .pycpliki z głównego katalogu, po prostu zrób
find "*.pyc" -exec git rm -f "{}" \;
Spowoduje to usunięcie tylko app.pycpliku z repozytorium git.