Ich bin von einem Problem überrascht worden, das für Git-Neulinge häufig genug ist.
Ich habe vergessen, eine bestimmte Datei zu .gitignore, und das Hinzufügen zu .gitignore nach dem Commit macht keinen Unterschied.
Ich fand diese Seite auf gitready erklärt, wie man eine Datei aus dem Repository entfernt, ohne sie aus der Arbeitsbaumstruktur zu entfernen (mit dem Befehl git rm --cached <file>
, was gut funktioniert, außer wenn ich dann versuche, diese Datei wieder in einen anderen Zweig zu migrieren) gelöscht.
Schritte zum Reproduzieren, in einem leeren Ordner:
%Vor%Bis hier ist alles in Ordnung
%Vor%An diesem Punkt sind meine wantnot.txt-Dateien nicht mehr in meinem Master, und natürlich hilft auch das Auschecken von BranchForIgnore nicht.
Was ist zu tun?
Ich habe vergessen, eine bestimmte Datei zu .gitignore, und das Hinzufügen zu
.gitignore
nach dem Commit macht keinen Unterschied.
Nun, natürlich nicht. Das Ignorieren betrifft ungefähr nicht gekerbte Dateien (dh Dateien, die nicht der Versionskontrolle unterliegen).
Ich habe eine Seite auf gitready gefunden, die erklärt, wie man eine Datei aus dem Repository entfernt, ohne sie aus dem Arbeitsbaum zu entfernen (mit dem Befehl
git rm --cached <file>
, was gut funktioniert, außer wenn ich dann versuche, eine Zusammenführung durchzuführen) In einem anderen Zweig werden die Dateien im Arbeitsbaum gelöscht.
Git löscht die Datei, weil Sie sie wiederherstellen können, da sie in einem Zweig verfolgt wurde.
Die Lösung wäre, in allen Zweigen eine Datei "zu entschlüsseln" (Datei aus der Versionskontrolle zu entfernen), indem git cherry-pick
verwendet wird oder git rm --cached <file> && git commit -a
in einem separaten Commit-Zweig erstellt wird, und dann diesen Zweig in alle Zweige zusammenführt ( und dann Datei von einer verfolgten Version wiederherstellen).
Benennen Sie die Datei in einen temporären Namen um (ohne git zu verwenden), schreiben Sie den Löschvorgang plus die .gitignore-Datei fest und benennen Sie die Datei anschließend wieder in den ursprünglichen Namen um.
%Vor%Die Verwendung eines separaten Zweigs kann das Problem unnötig verwirren.
Tags und Links git