Unter SVN verursachte das direkte Entfernen von Elementen aus dem Dateisystem (anstatt svn zu verwenden) eine Menge Kopfschmerzen.
Ich habe nicht festgestellt, dass dies ein Problem bei der Verwendung ist git
, aber ich stelle fest, dass Git eine eigene rm
Implementierung hat (git rm
).
Was ist der Unterschied zwischen rm
und git rm
?
git reset --hard
Master verwenden und dann auschecken, um aus dem Zustand des losgelösten Kopfes herauszukommen, da ich wusste, dass ich keine nicht festgeschriebenen Änderungen hatte. Wenn Sie Ihre Änderungen nicht festgeschrieben haben, möchten Sie vielleicht einen Git-Stash durchführen, aber ich bin relativ neu in Git, daher kenne ich den genauen Befehl nicht. Wenn Sie in oder nach 2014 hierher gekommen sind, hoffe ich, dass diese Antwort für Sie nützlich war.rm
(anstellegit rm
) viele Dateien verwendet und gelöscht habe und diese jetzt nichtgit
mehr verfolgen möchte . Gibt es eine Möglichkeit, Änderungen rückgängig zu machen? Ich möchtegit
meinerm
als entfernt betreten , da ich sie überhaupt nicht benutzt habegit rm
.Das Entfernen von Dateien mit
rm
ist per se kein Problem, aber wenn Sie dann festlegen möchten, dass die Datei entfernt wurde, müssen Siegit rm
trotzdem eine ausführen, sodass Sie dies genauso gut von Anfang an tun können.Abhängig von Ihrer Shell erhalten Sie
git rm
nach dem Löschen der Datei keine Tab-Vervollständigung, sodass Sie den Pfad selbst buchstabieren müssen. Wenngit rm
die Datei noch vorhanden ist, funktioniert die Tab-Vervollständigung wie gewohnt.quelle
git rm
entfernt die Datei aus dem Index und dem Arbeitsverzeichnis (nur Index, wenn Sie sie verwendet haben--cached
), damit das Löschen für das nächste Festschreiben bereitgestellt wird.quelle
Wenn Sie jedoch am Ende rm anstelle von git rm verwenden. Sie können das Hinzufügen von Git überspringen und die Änderungen direkt festschreiben, indem Sie:
git commit -a
quelle
So können Sie eine Datei mit löschen
rm -f
und dann mit aus Ihrem Index entfernengit rm
Sie können dies jedoch alles auf einmal mit nur einem tun
git rm
quelle
Wenn Sie git rm verwenden, ist das Entfernen Teil Ihres nächsten Commits. Wenn Sie also die Änderung vorantreiben möchten, sollten Sie git rm verwenden
quelle
Zusätzlich zu Andys Antwort gibt es einen zusätzlichen Nutzen für
git rm
:Sicherheit : Wenn Sie dies
git rm
stattdessen tunrm
, blockiert Git das Entfernen, wenn eine Diskrepanz zwischen derHEAD
Version einer Datei und dem Staging-Index oder der Arbeitsbaumversion besteht. Dieser Block ist ein Sicherheitsmechanismus , um das Entfernen laufender Änderungen zu verhindern.Schutz :
git rm --dry-run
. Diese Option ist ein Schutz, der dengit rm
Befehl ausführt, die Dateien jedoch nicht löscht. Stattdessen wird ausgegeben, welche Dateien entfernt worden wären.quelle