Jak git ignorować punkty kontrolne notatnika ipython w dowolnym miejscu repozytorium

105

To głównie kwestia gita. Chcę zatwierdzić moje zeszyty ipython, ale gitignore punkty kontrolne.

Repozytorium ma wiele folderów, z których każdy ma notatniki ipython, dlatego samo zignorowanie jednego katalogu nie rozwiązuje problemu. Chcę nadal dodawać nowe foldery z notatnikami w środku, nie martwiąc się o to.

Moje przeczucie jest takie, że musi istnieć sposób na użycie jakiegoś symbolu wieloznacznego, aby gitignore wszystko, co jest w folderze o nazwie * /. Ipynb_checkpoints /, ale nie był w stanie tego rozgryźć .

Jak więc mogę git zignorować wszystkie punkty kontrolne notebooka ipython w repozytorium, gdziekolwiek się one znajdują?

sapo_cosmico
źródło

Odpowiedzi:

139

Jeśli dodasz do .gitignore:

.ipynb_checkpoints

(bez ukośników) każdy plik lub katalog w repozytorium o tej nazwie zostanie zignorowany. Ścieżki są sprawdzane tylko w przypadku uwzględnienia /.

Z tej odpowiedzi możesz również mieć globalny gitignore dla swojego komputera:

git config --global core.excludesfile '~/.gitignore'
echo '.ipynb_checkpoints' >> ~/.gitignore
minrk
źródło
2
Wygląda na to, że powinno działać, ale z jakiegoś powodu nie działa dla mnie. Z głównego folderu repozytorium moje punkty kontrolne znajdują się w notebooks/.ipynb_checkpoints/i nie mogę ich ignorować! Próbowałem dodać tę ścieżkę, z końcowym ukośnikiem do mojego .gitignore i bez niego. Wypróbowałem twoją sugestię. Próbowałem dodać wiele gwiazdek. Jakieś pomysły?
Engineero
@Engineero Czy powiedziałeś gitowi, gdzie jest twój .gitignoreplik git config?
Ciprian Tomoiagă
6
@Engineero: czy wykonałeś już część z tego? .gitignorenie można ignorować rzeczy po fakcie (jeśli są już popełnione)
Mr_and_Mrs_D
@CiprianTomoiaga znajduje się .gitignoredobrze, a inne pliki i foldery zostaną zignorowane. Nie wiem, dlaczego to nie działa, ale znalazłem coś, co działa. Dodam to jako odpowiedź.
Engineero
@Mr_and_Mrs_D Też miałem ten problem, ale po prostu usunąłem indeksowanie plików i spróbowałem czegoś innego .gitignore. W końcu udało mi się sprawić, że zadziała z czymś, co dodam jako odpowiedź.
Engineero
26

Poleciłbym użyć **/*.ipynb_checkpoints/w swoim .gitignorepliku.

Anton Karazeev
źródło
12

Dodaj do .gitignore:

.ipynb_checkpoints
*/.ipynb_checkpoints/*

I powinieneś być gotowy.

djwbrown
źródło
2

To działa.

Folder/.ipynb_checkpoints/*.ipynb
Merlinie
źródło
2

Czasami możesz zapomnieć, że już śledzisz plik w swoim repozytorium git (tak jak było w moim przypadku). Więc być może będziesz musiał go najpierw wyśledzić

git rm --cached Folder_with_ipynb/.ipynb_checkpoints/news-checkpoint.ipynb

a następnie dodaj do swojej .gitignorelinii:

*/.ipynb_checkpoints/*.ipynb
Alexander
źródło
0

Jeśli jeszcze nie przekazałeś swojego kodu, dodaj

.ipynb_checkpoints

do twojego .gitignore

Jeśli już wcześniej przekazałeś swój kod, dodaj .ipynb_checkpoints przekazałeś swój do swojego .gitignore. Zapewni to, że .ipynb_checkpoints będą w przyszłości ignorowane, ale nie usunie starych .ipynb_checkpoints

Musisz ręcznie usunąć pamięć podręczną w każdym folderze w odpowiedniej gałęzi. Przejdź najpierw do folderu zawierającego .ipynb_checkpoints i zrób

git rm -r --cached .ipynb_checkpoints
Ashok Kumar
źródło
-1

Z jakiegoś powodu żadna z obecnych odpowiedzi nie zadziałała. W końcu udało mi się zmusić git do zignorowania wszystkich moich plików punktów kontrolnych (i wszelkich innych niechcianych ukrytych plików i folderów), dodając:

.*  # ignore all hidden files and folders
!/.gitignore  # explicitly do not ignore .gitignore

do mojego .gitignorepliku w katalogu podstawowym repozytorium. Jest to obszerny przegląd i będzie trudny do utrzymania, jeśli chcesz zachować ukryte pliki w swoim repozytorium, ale nie potrzebuję żadnego z wyjątkiem mojego .gitignore, więc działa dla mnie!

Engineero
źródło
Tak, dla mnie też żadne z powyższych nie działa. Nawet to, co zaproponowałeś. Po utworzeniu punktu kontrolnego pojawia się on w statusie git.
pebox
-3

Użyłem polecenia rm -rf .ipynb_checkpoints. To zadziałało dla mnie.

Sahar Nasser
źródło
3
Oznacza to usunięcie folderu, a nie jego ignorowanie. To jest myląca odpowiedź.
Chandra Kanth