git rm file.txt
Entfernt die Datei aus dem Repo, löscht sie aber auch aus dem lokalen Dateisystem .
Um die Datei aus dem Repo zu entfernen und nicht aus dem lokalen Dateisystem zu löschen, verwenden Sie:
git rm --cached file.txt
In der folgenden genauen Situation verwende ich git, um die Versionskontrolle für die Website meines Unternehmens aufrechtzuerhalten. Das Verzeichnis "mickey" war jedoch ein tmp-Ordner, um private Inhalte für einen CAD-Entwickler freizugeben. Als er RIESIGE Dateien brauchte, habe ich ein privates, nicht verknüpftes Verzeichnis erstellt und die Dateien dort per FTP gespeichert, damit er sie über den Browser abrufen kann. Ich vergaß dies und führte später eine git add -A
aus dem Basisverzeichnis der Website durch. Anschließend wurden git status
die neuen Dateien angezeigt, die festgeschrieben werden müssen. Jetzt musste ich sie aus Git's Tracking und Versionskontrolle löschen ...
Die folgende Beispielausgabe stammt von dem, was mir gerade passiert ist, als ich die .003
Datei unbeabsichtigt gelöscht habe . Zum Glück ist es mir egal, was mit der lokalen Kopie passiert ist .003
, aber einige der anderen derzeit geänderten Dateien waren Updates, die ich gerade auf der Website vorgenommen habe, und es wäre episch, wenn sie im lokalen Dateisystem gelöscht worden wären! "Lokales Dateisystem" = die Live-Website (keine gute Praxis, aber Realität) .
[~/www]$ git rm shop/mickey/mtt_flange_SCN.7z.003
error: 'shop/mickey/mtt_flange_SCN.7z.003' has local modifications
(use --cached to keep the file, or -f to force removal)
[~/www]$ git rm -f shop/mickey/mtt_flange_SCN.7z.003
rm 'shop/mickey/mtt_flange_SCN.7z.003'
[~/www]$
[~/www]$ git status
# On branch master
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# deleted: shop/mickey/mtt_flange_SCN.7z.003
#
# Changed but not updated:
# (use "git add <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# modified: shop/mickey/mtt_flange_SCN.7z.001
# modified: shop/mickey/mtt_flange_SCN.7z.002
[~/www]$ ls shop/mickey/mtt_flange_S*
shop/mickey/mtt_flange_SCN.7z.001 shop/mickey/mtt_flange_SCN.7z.002
[~/www]$
[~/www]$
[~/www]$ git rm --cached shop/mickey/mtt_flange_SCN.7z.002
rm 'shop/mickey/mtt_flange_SCN.7z.002'
[~/www]$ ls shop/mickey/mtt_flange_S*
shop/mickey/mtt_flange_SCN.7z.001 shop/mickey/mtt_flange_SCN.7z.002
[~/www]$
[~/www]$
[~/www]$ git status
# On branch master
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# deleted: shop/mickey/mtt_flange_SCN.7z.002
# deleted: shop/mickey/mtt_flange_SCN.7z.003
#
# Changed but not updated:
# modified: shop/mickey/mtt_flange_SCN.7z.001
[~/www]$
Update: Diese Antwort erhält etwas Verkehr, daher dachte ich, ich würde erwähnen, dass meine andere Git-Antwort einige großartige Ressourcen enthält: Diese Seite enthält eine Grafik, die mir dabei hilft, Git zu entmystifizieren. Das "Pro Git" Buch ist online und hilft mir sehr.
git rm
ist die richtige Antwort, aber denken Sie daran, dass die Datei noch im Verlauf vorhanden ist. Wenn Sie eine Datei entfernen möchten, weil sie vertrauliche Informationen enthält, müssen Sie etwas drastischeres tun. (Das Ändern des Verlaufs, insbesondere für Inhalte, die Sie bereits gepusht haben, ist eine drastische Maßnahme und sollte nach Möglichkeit vermieden werden.)