Verwendung des Befehls gitignore in git


119

Ich arbeite zum ersten Mal an Git. Ich habe meinen Zweig auf Github geschoben und er hat alle Bibliotheken und Dokumente in den Github geschoben. Was kann ich nun tun und wie kann ich den Befehl gitignore verwenden, um denselben Fehler erneut zu vermeiden?


1
.gitignoreist eine Datei in Ihrem Git-Stammverzeichnis. Fügen Sie die Namensmuster für die Dateien hinzu, die Sie ignorieren möchten, und die Dateien werden automatisch ignoriert.
LonelyWebCrawler

Ich bin auf Ubuntu. Können Sie bitte den Pfad des Git-Stammverzeichnisses sagen
user1559230

2
Es ist das Verzeichnis, in dem Sie verwendet haben git init. Das .gitVerzeichnis befindet sich dort.
LonelyWebCrawler

2
Für diejenigen, die nicht wissen, wie man Gitignore benutzt - gehen Sie zu gitignore.io. Sie können alle Werkzeuge eingeben, die Sie verwenden (Symfony, CakePHP, ZendFramework, WordPress, Grunzen, erhabener Text, Netbeans usw.) ...) und es wird die Git-Ignorierdatei für Sie generiert. Wenn Sie nicht wissen, wie man Gitignore verwendet, denke ich, dass der beste Weg, dies zu lernen, darin besteht, sich ein gutes Anwendungsfallbeispiel anzusehen (wie das von gitignore.io generierte. Wenn Sie es von cmd line aus verwenden möchten (geeky way) ) siehe dieses Tutorial: vimeo.com/70609819
DevWL

Antworten:


162

Basierend auf Ihren Aussagen handelt es sich bei diesen Dateien um Bibliotheken / Dokumentationen, die Sie nicht löschen, aber auch nicht weiterleiten möchten github. Angenommen, Sie haben Ihr Projekt in einem Ordner your_projectund einem Dokumentverzeichnis : your_project/doc.

  1. Entfernen Sie es aus dem Projektverzeichnis (ohne es tatsächlich zu löschen): git rm --cached doc/*
  2. Wenn Sie noch keine haben .gitignore, können Sie eine direkt in Ihrem Projektordner erstellen : project/.gitignore.
  3. Setzen Sie doc/*den .gitignore ein
  4. Stellen Sie die festzuschreibende Datei bereit: git add project/.gitignore
  5. Commit : git commit -m "message".
  6. Schieben Sie Ihr Wechselgeld auf github.

Kannst du mir bitte sagen, wie ich die .gitignore-Datei schreibe? dh wie man den Pfad der Ordner und Dateien, die ich ignorieren möchte, in die .gitignore-Datei schreibt. Danke
user1559230

Danke für deine Antwort. Vor dem
Festschreiben

4
Hallo, der Gitignore ist nur eine reine Textdatei. Es ist eigentlich .gitignore (DOTgitignore). Geben Sie einfach den Namen der Datei / Dateitypen ein, die git ignorieren soll, einen pro Zeile. Beispiel: sujee.net/tech/articles/gitignore
u19964


42

Wenn Sie keine Gitignore-Datei haben, verwenden Sie zuerst:

touch .gitignore

dann diesen Befehl, um Zeilen in Ihre Gitignore-Datei einzufügen:

echo 'application/cache' >> .gitignore

Seien Sie vorsichtig mit neuen Zeilen


Es gibt keine Notwendigkeit, touchdie Datei zuerst. >>ist auch, >wenn die Datei noch nicht existiert. echoHängt am Ende der Ausgabe eine neue Zeile an. Sie können das mit stoppen -n. Wenn Sie verschiedene Ignorierungen benötigen, führen Sie entweder verschiedene Echos durch oder verwenden Sie -eFolgendes : echo -e "**/cache/\n**.pyc" >> .gitignore. Das doppelte Sternchen stimmt auch rekursiv mit allen Dateien überein, die sich in Ordnern befinden. Verwenden Sie /am Ende von Ordnern, nur für den Fall.
Mazunki

1
@ Andrew tl; dr: Fügen Sie jede ignorierte Datei mit hinzu echo "file_to_be_ignored" >> .gitignore, ohne dass Sie etwas anderes tun müssen. Beenden Sie Ordnernamen mit /as echo "**/modules/" >> .gitignore.
Mazunki

Warum wurde mein Kommentar gelöscht
Andrew

12

Git Ignor ist eine Konvention in Git. Wenn Sie eine Datei mit dem Namen .gitignore festlegen, werden die Dateien in diesem Verzeichnis und tiefere Verzeichnisse ignoriert, die den in der Datei enthaltenen Mustern entsprechen. Am häufigsten wird nur eine solche Datei auf der obersten Ebene gespeichert. Sie können jedoch andere tiefer in Ihre Verzeichnisstruktur aufnehmen, um noch mehr Muster zu ignorieren, oder sie für dieses Verzeichnis und anschließend tiefere Muster nicht mehr ignorieren.

Ebenso können Sie bestimmte Dateien in einer tieferen Struktur oder einer bestimmten Teilmenge "aufheben" (dh Sie ignorieren * .log, möchten aber weiterhin das wichtige.log verfolgen), indem Sie Muster angeben, die mit beginnen !. z.B:

*.log !important.log

ignoriert alle Protokolldateien, verfolgt jedoch Dateien mit dem Namen "wichtig.log"

Wenn Sie Dateien verfolgen, die Sie ignorieren wollten, löschen Sie sie, fügen Sie das Muster zu Ihrer Gitignore-Datei hinzu und fügen Sie alle Änderungen hinzu

# 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 

Von nun an werden sie in Ihrem Repository nicht mehr verfolgt.

Wenn Sie Ihre Geschichte bereinigen möchten, können Sie

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

Markieren Sie dann jedes Commit mit eoder edit. Speichern Sie den Plan. Jetzt wird git Ihren Verlauf wiedergeben und bei jedem Commit anhalten, das Sie mit e markiert haben. Hier löschen Sie die Dateien, die Sie nicht möchten, git add -Aund dann, git rebase --continuebis Sie fertig sind. Ihre Geschichte wird sauber sein. Stellen Sie sicher, dass Sie Ihren Mitarbeitern mitteilen, dass Sie einen Push erzwingen müssen und dass sie das, was sie noch nicht gedrückt haben, neu definieren müssen.


8

In Ihrem Git-Stammverzeichnis befindet sich eine Datei mit dem Namen .gitignore. Es ist eine Datei, kein Befehl. Sie müssen nur die Namen der Dateien einfügen, die Sie ignorieren möchten, und sie werden automatisch ignoriert. Wenn Sie beispielsweise alle automatisch gespeicherten Emacs-Dateien ignorieren möchten, die mit enden ~, können Sie folgende Zeile hinzufügen:

*~

Wenn Sie unerwünschte Dateien aus Ihrem Zweig entfernen möchten, können Sie Folgendes verwenden git add -A: " Entfernt Dateien, die sich nicht mehr im Arbeitsbaum befinden ".

Hinweis: Was ich als "Git-Stammverzeichnis" bezeichnet habe, ist einfach das Verzeichnis, in dem Sie es git initzum ersten Mal verwendet haben. Hier finden Sie auch das .gitVerzeichnis.


Was passiert mit den bereits
geposteten

4

Wenn Sie keine Gitignore-Datei haben. Sie können eine neue erstellen, indem Sie

touch .gitignore

Sie können einen Ordner ausschließen, indem Sie den folgenden Befehl in die .gitignore-Datei eingeben

/folderName

Schieben Sie diese Datei in Ihr Git-Repository, damit eine neue Person, die Ihr Projekt klont, diese nicht erneut hinzufügen muss


2

Es gibt verschiedene Möglichkeiten, Gitignore Git zu verwenden

  • Angabe durch den spezifischen Dateinamen.
    Um beispielsweise eine Datei mit dem Namen readme.txt zu ignorieren , müssen Sie lediglich readme.txt in die .gitignore-Datei schreiben.
  • Sie können auch den Namen der Dateierweiterung schreiben. Um beispielsweise
    alle TXT-Dateien zu ignorieren, schreiben Sie * .txt.
  • Sie können auch einen ganzen Ordner ignorieren. Sie möchten beispielsweise den
    Ordner test ignorieren . Dann schreiben Sie einfach test / in die Datei.

Erstellen Sie einfach eine Gitignore-Datei und schreiben Sie alles ein, was Sie ignorieren möchten. Eine Beispiel-Gitignore-Datei wäre:

# 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/

Weitere Informationen finden Sie in der Git-Dokumentation gitignore


1

Auf meinem Mac habe ich diese Datei gefunden. .gitignore_global Sie war in meinem Home-Verzeichnis versteckt ls -altr.

Ich habe Eclipse-Dateien hinzugefügt, die Git ignorieren soll. Der Inhalt sieht folgendermaßen aus:

 *~
.DS_Store
.project
.settings
.classpath
.metadata

Wenn ich die .gitignore-Datei in meinen Projektordner lege, wird mein Eclipse-Projekt lokal durcheinander gebracht. Wissen Sie, warum das passieren könnte und wie Sie es verhindern können? im Moment halte ich mich nur von .gitignore fern.
JesseBoyd

Ich benutze keine Sonnenfinsternis mehr. Inteilji jetzt
j2emanue
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.