Jak używać polecenia gitignore w git

119

Pracuję pierwszy raz na git. Wrzuciłem swoją gałąź na github, a cała biblioteka i dokumenty zostały umieszczone na githubie. Teraz co mogę zrobić i jak mogę użyć polecenia gitignore, aby ponownie uniknąć tego samego błędu.

user1559230
źródło
1
.gitignoreto plik w katalogu głównym git. Dodaj wzorce nazw dla plików, które chcesz zignorować, a pliki zostaną automatycznie zignorowane.
LonelyWebCrawler
Jestem na ubuntu. Czy możesz
podać
2
To jest katalog, w którym użyłeś git init. .gitKatalogu znajduje się tam.
LonelyWebCrawler
2
Dla tych, którzy nie wiedzą, jak używać gitignore - przejdź do gitignore.io i możesz wpisać wszystkie używane narzędzia (symfony, CakePHP, ZendFramework, wordpress, grunt, sublime text, netbeans, itd., Otrzymasz wiertło ...) i wygeneruje dla Ciebie plik ignorowania git. Jeśli nie wiesz, jak używać gitignore, myślę, że najlepszym sposobem na nauczenie się tego jest przyjrzenie się dobrym przykładom przypadków użycia (jak ten wygenerowany przez gitignore.io. Jeśli chcesz go używać z wiersza cmd (geeky sposób ) zobacz samouczek: vimeo.com/70609819
DevWL

Odpowiedzi:

162

Na podstawie tego, co powiedziałeś, te pliki to biblioteki / dokumentacja, których nie chcesz usuwać, ale także nie chcesz do nich przesyłać github. Powiedzmy, że masz swój projekt w folderze your_projecti katalogu doc: your_project/doc.

  1. Usuń go z katalogu projektu (bez faktycznego usuwania): git rm --cached doc/*
  2. Jeżeli nie masz jeszcze .gitignoremożna zrobić jeden prawy wewnątrz folderu projektu: project/.gitignore.
  3. Umieść doc/*w .gitignore
  4. Przygotuj plik do zatwierdzenia: git add project/.gitignore
  5. Popełnić: git commit -m "message".
  6. Przekaż zmianę do github.
u19964
źródło
czy możesz mi powiedzieć, jak napisać plik .gitignore. tj. jak napisać ścieżkę do folderów i plików, które chcę zignorować w pliku .gitignore. Dzięki
user1559230
Dziękuję za odpowiedź. Przed zatwierdzeniem musiałem uruchomić git add -A
user1559230
4
Cześć, gitignore to zwykły plik tekstowy. W rzeczywistości jest to .gitignore (DOTgitignore). Po prostu wpisz nazwę pliku / typu plików, które chcesz ignorować, po jednym w każdym wierszu. Przykład: sujee.net/tech/articles/gitignore
u19964
42

Jeśli nie masz pliku .gitignore, najpierw użyj:

touch .gitignore

następnie to polecenie, aby dodać linie do pliku gitignore:

echo 'application/cache' >> .gitignore

Uważaj na nowe linie

Serdar Değirmenci
źródło
Nie ma potrzeby, aby touchnajpierw plik był. >>jest równoznaczne z tym >, że plik już nie istnieje. echodołącza nową linię na końcu wyjścia. Możesz to zatrzymać -n. Jeśli potrzebujesz różnych ignoruje, albo robić różne echo lub użyć -e, jak następuje: echo -e "**/cache/\n**.pyc" >> .gitignore. Podwójna gwiazdka odpowiada również rekursywnie wszystkim plikom wkopywanym do folderów. Użyj /na końcu folderów, na wszelki wypadek.
mazunki
1
@Andrew tl; dr: Dodaj każdy zignorowany plik za pomocą echo "file_to_be_ignored" >> .gitignore, nie musisz robić nic więcej. Nazwy folderów zakończ /jako echo "**/modules/" >> .gitignore.
mazunki
Dlaczego mój komentarz został usunięty
Andrzej
12

git ignore to konwencja w git. Ustawienie pliku o nazwie .gitignore zignoruje pliki w tym katalogu i głębszych katalogach, które pasują do wzorców zawartych w pliku. Najczęstszym zastosowaniem jest posiadanie tylko jednego takiego pliku na najwyższym poziomie. Ale możesz dodać inne głębiej w strukturze katalogów, aby zignorować jeszcze więcej wzorców lub przestać ignorować je dla tego katalogu, a następnie głębszych.

Podobnie, możesz „zrezygnować” z ignorowania pewnych plików w głębszej strukturze lub określonym podzbiorze (tj. Ignorujesz * .log, ale nadal chcesz śledzić ważne.log), określając wzorce zaczynające się od !. na przykład:

*.log !important.log

zignoruje wszystkie pliki dziennika, ale śledzi pliki o nazwie ważne.log

Jeśli śledzisz pliki, które chciałeś zignorować, usuń je, dodaj wzorzec do pliku .gitignore i dodaj wszystkie zmiany

# delete files that should be ignored, or untrack them with 
# git rm --cached <file list or pattern>

# stage all the changes git commit
git add -A 

od teraz twoje repozytorium nie będzie ich śledzić.

Jeśli chcesz wyczyścić swoją historię, możesz

# if you want to correct the last 10 commits
git rebase -i --preserve-merges HEAD~10 

następnie zaznacz każde zatwierdzenie za pomocą elub edit. Zapisz plan. Teraz git odtworzy twoją historię zatrzymując się przy każdym zatwierdzeniu zaznaczonym przez e. Tutaj usuwasz niepotrzebne pliki, git add -Aa potem git rebase --continueaż skończysz. Twoja historia będzie czysta. Upewnij się, że powiesz współpracownikom, ponieważ będziesz musiał wymusić nacisk, a oni będą musieli zmienić bazę tego, czego jeszcze nie forsowali.

Adam Dymitruk
źródło
8

W katalogu głównym git znajduje się plik o nazwie .gitignore. To plik, a nie polecenie. Wystarczy wpisać nazwy plików, które chcesz zignorować, a zostaną one automatycznie zignorowane. Na przykład, jeśli chcesz zignorować wszystkie pliki autozapisu emacsa, które kończą się na ~, możesz dodać tę linię:

*~

Jeśli chcesz usunąć niechciane pliki ze swojej gałęzi, możesz użyć git add -A, który " usuwa pliki, których nie ma już w drzewie roboczym ".

Uwaga: To, co nazwałem „katalogiem głównym git”, to po prostu katalog, w którym byłeś użyty git initpo raz pierwszy. Tutaj również możesz znaleźć .gitkatalog.

LonelyWebCrawler
źródło
co się stanie z już wypchniętymi plikami, których nie chcę
user1559230
4

Jeśli nie masz pliku .gitignore. Możesz utworzyć nowy przez

touch .gitignore

Możesz wykluczyć folder, wprowadzając poniższe polecenie w pliku .gitignore

/folderName

wrzuć ten plik do repozytorium git, aby nowa osoba nie musiała ponownie dodawać tego samego, gdy nowa osoba sklonuje Twój projekt

karthik vishnu kumar
źródło
2

Istnieje kilka sposobów korzystania z gitignore git

  • określanie przez określoną nazwę pliku. na przykład, aby zignorować plik o
    nazwie readme.txt, wystarczy zapisać readme.txt w pliku .gitignore.
  • możesz również wpisać nazwę rozszerzenia pliku. Na przykład, aby
    zignorować wszystkie pliki .txt, napisz * .txt.
  • możesz także zignorować cały folder. na przykład chcesz zignorować
    folder o nazwie test. Następnie po prostu napisz test / w pliku.

po prostu stwórz plik .gitignore i napisz cokolwiek chcesz zignorować przykładowy plik gitignore to:

# NPM packages folder.
node_modules

# Build files
dist/

# lock files
yarn.lock
package-lock.json

# Logs
logs
*.log
npm-debug.log*

# node-waf configuration
.lock-wscript

# Optional npm cache directory
.npm

# Optional REPL history
.node_repl_history

# Jest Coverage
coverage

.history/

Możesz znaleźć więcej w dokumentacji git gitignore

Afaq Ahmed Khan
źródło
1

Na moim .gitignore_global Macu znalazłem ten plik ... był w moim katalogu domowym ukryty, więc zrób to, ls -altraby go zobaczyć.

Dodałem pliki eclipse, które chciałem, aby Git zignorował. zawartość wygląda następująco:

 *~
.DS_Store
.project
.settings
.classpath
.metadata
j2emanue
źródło
kiedy umieściłem plik .gitignore w folderze mojego projektu, lokalnie zepsuło to mój projekt zaćmienia. czy wiesz, dlaczego tak się mogło stać i jak temu zapobiec? na razie trzymam się z dala od .gitignore.
JesseBoyd
Nie używam już zaćmienia. Inteilji now
j2emanue