Ich habe ein Problem mit diesem Bash-Skript, das ich schreibe. Ich versuche, Schritt 3 von dieses Verfahren aus der Github-Dokumentation anzuwenden , um alle Dateien in unserem Repository-Verlauf zu entfernen von unserer git Geschichte. Wenn zum Beispiel .gitignore .txt ignoriert, möchte ich alle .txt aus dem Verlauf entfernen. Und so weiter für jede .gitignore-Leitung.
Ich kann einen Platzhalter in der Beispieldatei verwenden. So kann ich Folgendes ausführen, um alle TXT-Dateien zu entfernen:
%Vor%Also habe ich versucht, ein Bash-Skript zu machen, um das Gleiche zu tun.
Ich habe eine einfache .gitignore-Datei erstellt, um dies wie folgt zu testen:
%Vor%Mein Shell-Skript sieht folgendermaßen aus:
%Vor%Dies führt jedoch zu folgender Ausgabe:
%Vor%(Einmal für jede Zeile der Datei .gitignore)
Was habe ich falsch gemacht?
Ich glaube, das könnte tun, was Sie wollen.
%Vor% Ich habe alle sinnlosen Zwischenvariablen vermieden, die nur die Dinge komplizierten. (Obwohl ich nur das einfache Zitat aus str1
entfernen und str2
fallen lassen könnte, ist das für mich vernünftiger.)
Der Filter muss nur eine einzelne Zeichenkette sein, aber wie Sie diese Zeichenkette konstruieren, liegt an Ihnen.
Sie können wahrscheinlich auch alle Muster von gitignore sammeln und den Filter-Zweig einfach einmal ausführen (und an diesem Punkt auch nicht --force
benötigen).
Beachten Sie auch, dass Sie sicher sein sollten, dass Sie hier nur mit einfachen Mustern zu tun haben, denn das rm
und .gitignore
Verständnis von Mustern ist nicht immer das gleiche in allen Fällen, die ich nicht denke.