Dateien mit Git / GitHub löschen

115

Zunächst einmal bin ich neu bei Git.

Ich habe mit Finder eine Reihe von Dateien lokal auf meinem Mac gelöscht. Ich möchte, dass die gelöschten Dateien nicht mehr im aktuellen Zweig angezeigt werden, aber sie tun es.

Kennen Git-Benutzer einen Befehl zum Aktualisieren des Index?

Zack
quelle
Siehe auch stackoverflow.com/questions/492558/…
Petr Gladkikh

Antworten:

226

Ich denke, dies wäre eine einfachere Möglichkeit, das zu tun, was Sie wollen:

git add . -A 

Dann würden Sie einfach tun:

git commit -m "removed some files"

Wie oben beschrieben.

Samuel Mikel Bowles
quelle
Danke dir. Und ich hatte gerade einen Alias ​​geschrieben bash, um das oben genannte zu tun. Tolle.
Zack
12
Was macht die -A-Flagge?
Kim Prince
1
@KimPrince - Laut kernel.org ist "-A - wie" -u ", aber <filepattern> wird zusätzlich zum Index mit den Dateien im Arbeitsbaum abgeglichen. Dies bedeutet, dass neue Dateien gefunden und geänderte Inhalte bereitgestellt werden und Entfernen von Dateien, die sich nicht mehr im Arbeitsbaum befinden. "
j08691
3
@KimPrince git help addsagt Ihnen, was -Abedeutet und listet auch alle anderen Schalter auf.
Marcin Orlowski
1
Dies ist viel mehr als nur das Entfernen gelöschter Dateien. Es werden alle Dateien hinzugefügt, die im Verzeichnis geändert wurden, sodass dies keine zufriedenstellende Antwort ist.
Alex
19

Sie können gelöschte Dateien sehen, die noch verfolgt werden mit:

git ls-files --deleted

Um Dateien aus einem Zweig zu löschen, haben Sie folgende Möglichkeiten:

git ls-files --deleted -z | xargs -0 git rm

Von man git-rm:

Entfernen Sie Dateien aus dem Index oder aus dem Arbeitsbaum und dem Index. git-rm entfernt eine Datei nicht nur aus Ihrem Arbeitsverzeichnis. (Es gibt keine Möglichkeit, eine Datei 13 nur aus dem Arbeitsbaum zu entfernen und sie dennoch im Index zu belassen. Verwenden Sie / bin / rm, wenn Sie dies möchten.)

Um die "Entfernung" zu begehen, gehen Sie wie folgt vor:

git commit -m "removed some files"
miku
quelle
Dann müssen Sie die Änderung übernehmen -git commit -m "removed some files"
James Polley
17

Ich weiß nicht, ob dies seit den vorherigen Antworten zu git hinzugefügt wurde, aber ich habe es nur verwendet

git add -u
git commit -m "Removed some files"

das Gleiche erreichen.

Gareth
quelle
Dies funktioniert für den aufgelisteten Anwendungsfall, fügt jedoch nicht nur das Löschen der Dateien hinzu. Es werden alle Dateien hinzugefügt, die auf irgendeine Weise geändert wurden. Daher ist dies im Allgemeinen keine gute Möglichkeit, alle gelöschten Dateien zu entfernen, es sei denn, dies sind die einzigen Änderungen, die Sie vorgenommen haben.
Alex
2
git filter-branch --force --index-filter 'git rm --cached --ignore-unmatch deletefile.name' --prune-empty --tag-name-filter cat -- --all
git commit -m "Removed deletefile.name"
git push origin master --force

Ersetzen Sie deletefile.name durch die zu entfernende Datei. Ausführliche Erklärungen finden Sie im Artikel https://help.github.com/articles/remove-sensitive-data

Chawathe Vipul S.
quelle