Mein Problem ist, dass ich eine Reihe von WordPress-Websites in meinem Git-Repo habe, von denen ich selektiv nur den Inhalt meiner themes
Ordner festschreiben möchte , während ich den Rest der redundanten Dateien in WordPress ignoriere.
Ich habe zuvor .gitignore-Dateien verwendet, um Dateitypen zu ignorieren, aber kann es auch umgekehrt verwendet werden - das heißt, alles zu ignorieren, ABER einen bestimmten Ordnerpfad?
root (git repo)
- / wordpress
- - / (WordPress Site 1) / wp-Inhalt / Themen
- - / (WordPress Site 2) / wp-Inhalt / Themen
- - / (WordPress Site 3) / wp-Inhalt / Themen
Vielen Dank-
AKTUALISIEREN:
Basierend auf den Antworten habe ich Folgendes getan, aber es funktioniert nicht. Irgendwelche Ideen?
# Ignore everything:
*
# Except for wordpress themes:
!*/wp-content/themes/*
Ich habe auch die folgenden Variationen ausprobiert:
!*/wp-content/themes*
!*wp-content/themes/*
!wp-content/themes/*
!/wordpress/*/wp-content/themes*
!wordpress/*/wp-content/themes*
Keiner von diesen las meine themes
Ordner.
**
Platzhalter nur, wenn Sie keine Schrägstriche in Ihrem Muster haben, siehe sparethought.wordpress.com/2011/07/19/…!/wordpress/*/wp-content/themes/**/*
Ich habe das oben versucht und sie haben nicht so gut funktioniert. Ein besserer Ansatz ist von hier aus wie folgt: https://gist.github.com/444295
quelle
Ändern Sie die erste Zeile
ändere es auf
quelle
Versuchen Sie diese Antworten:
quelle
!*/wp-content/themes/
und benötigen würden!*/wp-content/themes/*
. Haben Sie diese Variante ausprobiert? Alternativ können Sie auch einfach verwenden!*/wp-content/themes/
und in jedem Themenverzeichnis eine eigene .gitignore-Datei mit!*
!*/wp-content/themes*
Wenn Sie einem Muster ein Ausrufezeichen (
!
) voranstellen, wird jedes vorherige Muster negiert, das es ausgeschlossen hat. Vermutlich könnten Sie also alles ignorieren und dann nur zulassen, was Sie wollen, indem Sie dieses Muster verwenden.quelle
!wordpress/[write out directories]/wp-content/themes/
. Beachten Sie den schließenden Schrägstrich und kein schließendes Sternchen. Beachten Sie auch, dass dies*
nur einer Ebene entspricht, nicht mehreren Verzeichnissen. Hier ist die Manpage: kernel.org/pub/software/scm/git/docs/gitignore.htmlIch musste alles außer einem Ordner mit Unterverzeichnissen ignorieren.
Bei mir funktioniert das
quelle
Angenommen, Sie haben eine Verzeichnisstruktur wie diese:
Wenn Sie nur Sites / all / files / private / Newspilot und Sites / default / files / Private / Newspilot zulassen möchten , können Sie zunächst Folgendes versuchen:
Das ist falsch! Das Knifflige an gitignore ist, dass Sie zuerst zulassen müssen, dass das übergeordnete ("private") Verzeichnis aufgenommen wird , bevor Sie das untergeordnete Verzeichnis ("Newspilot") in Commits aufnehmen können.
http://www.christianengvall.se/gitignore-exclude-folder-but-include-a-subfolder/
quelle
Yarins Antwort hat bei mir funktioniert, hier ist meine Version (ich brauche das
/wordpress
Unterverzeichnis nicht ):quelle
Ich stecke immer irgendwo fest, auch wenn ich mehrmals auf diese Frage zurückgekommen bin. Ich habe mir einen detaillierten Prozess ausgedacht, der Schritt für Schritt durchgeführt wird:
Zuerst einfach benutzen
git add
, um den eigentlichen Inhalt hinzuzufügen.Es werden die relevanten Dateien angezeigt, die dem Index hinzugefügt wurden, während alle anderen noch nicht verfolgt wurden. Dies hilft
.gitignore
beim schrittweisen Aufbau .Fügen Sie eine temporäre
DUMMY.TXT
Datei in Ihr Verzeichnis ein:Unser Ziel ist es nun, die Regeln so zu konstruieren, dass dies
DUMMY.TXT
die einzige ist, die noch als nicht verfolgt angezeigt wird, wenn wir fertig sind.Fügen Sie die Regeln hinzu:
.gitignore
Zuerst muss man einfach alles ignorieren. Nicht verfolgte Dateien sollten alle verschwunden sein, nur indizierte Dateien sollten Folgendes anzeigen:
Fügen Sie das erste Verzeichnis im Pfad hinzu
wp-content
Jetzt werden die nicht verfolgten Dateien wieder angezeigt, haben aber nur
wp-content
den InhaltIgnoriere alles im ersten Verzeichnis
/wp-content/*
und ignoriere es!/wp-content/themes
Jetzt werden die nicht verfolgten Dateien weiter auf nur noch eingegrenzt
wp-content/themes
Wiederholen Sie den Vorgang, bis nur noch diese Dummy-Datei als nicht verfolgt angezeigt wird:
quelle
Wenn Sie nach einer saubereren Lösung suchen , versuchen Sie bitte Folgendes.
Wie in den Kommentaren dieser Antwort erwähnt, müssen Sie diese Methode rekursiv verwenden.
In diesem Beispiel haben Sie ein Website-Setup, in
./
dem sich Ihr.git
Ordner und Ihre.gitignore
Datei befinden, und ein WordPress-Installationssetup in./wordpress
. Um alles unter dem./wordpress
Verzeichnis außer dem Themenverzeichnis selbst (wordpress/wp-content/themes/my-theme
) korrekt zu ignorieren , müssen Sie jedes Verzeichnis rekursiv ignorieren und zulassen, bis das Verzeichnis, das Sie zulassen möchten:Der Grund für das Ignorieren mit einem Platzhalter und das Zulassen (oder Ignorieren von 'abgesehen von') des Verzeichnisses selbst ermöglicht es Git, zuerst in das Verzeichnis zu schauen, bevor alles darin ignoriert wird. Wir weisen Git dann an, alles außer dem von uns angegebenen Verzeichnis zu ignorieren. Hier ist die gleiche Syntax, aber in der Reihenfolge, wie Git sie betrachtet:
Hoffentlich hilft dies jemandem, die Notwendigkeit der rekursiven Methode besser zu verstehen.
quelle
spät zur Party, aber hier ist, was ich für unbekannte Tiefe benutze (die akzeptierte Lösung erfordert bekannte Tiefe)
auf diese weise wird alles unter wp-content nicht ignoriert.
quelle
Nachdem ich dies mehrmals gebraucht habe, habe ich endlich eine Lösung gefunden [1]:
Erklärung Zeile für Zeile:
.gitignore
dich (und möglicherweise.gitattributes
).[1] Einschränkungen (die mir bekannt sind):
/*
würde das gesamte Schema beschädigen).wordpress
in diesem Fall) in Zeile 4 aufnehmen möchten, darf nicht.
im Namen enthalten sein (z. B.wordpress.1
würde nicht funktionieren). Wenn dies der Fall ist.
, entfernen Sie Zeile 2 und suchen Sie nach einer anderen Möglichkeit, alle Dateien im Stammverzeichnis auszuschließen.git version 2.17.1.windows.2
quelle
Eine weitere einfache Lösung:
Sie möchten alle Wordpress-Dateien ignorieren, aber nicht Ihr Thema (zum Beispiel).
.gitignore , Inhalt ist:
In diesem Beispiel können Sie WordPress entfernen, wenn sich .gitignore im Root-WordPress-Verzeichnis befindet
Sie können genau das Gleiche mit allen Ordnern und Inhalten tun, die Sie "ausnahmsweise" aus gitignored Ordnern / Dateien heraushalten möchten
Fazit :
ABER
quelle
Sie können dies versuchen:
Wo :
quelle
Hier ist meine Lösung, die einen Checkout in voraussetzt
wp-content
und Testen:
es ignoriert also korrekt alles, was ich nicht will und nichts, was ich behalten möchte.
Code freigeben
Gitlab ist gemäß https://docs.gitlab.com/ee/workflow/repository_mirroring.html mit Repository-Spiegeln für geschützte Zweige konfiguriert
Wenn Code in einen geschützten Zweig verschoben wird, wird er auf die Staging- und Produktionsserver im
/opt/checkout/repo.git/
Bare-Repo gespiegelt . Der folgendepost-receive
Hook (in/opt/checkout/repo.git/hooks/post-receive
) checkt dann den Code in das Arbeitsverzeichnis aus.Weitere Informationen finden Sie unter https://www.digitalocean.com/community/tutorials/how-to-set-up-automatic-deployment-with-git-with-a-vps
quelle
So habe ich es gemacht:
Das hat bei mir funktioniert. Ermöglicht es Ihnen, alles außer bestimmten Dateien oder Ordnern zu ignorieren
macOS sierra
quelle
Ich bin im selben Boot und versuche, eine Reihe von Wordpress-Sites unter einem Repo zu verwalten. Meine Verzeichnisstruktur sieht folgendermaßen aus:
Ich möchte nur die Elemente im
app/public
Ordner für jede Site verfolgen . Ich habe die Beispiele auf dieser Seite sowie einige der Vorschläge hier ausprobiert und am Ende Folgendes ausprobiert:Das funktionierte, aber ich musste für jede Site, die ich vermeiden wollte, denselben Pfad ignorieren.
Dann habe ich einfach den Namen der Site durch ersetzt
*
und das hat den Trick für mich getan. Das habe ich also benutzt:Dadurch wurde effektiv alles im Ordner der Site ignoriert, während alles im
app/public
Ordner für jede Site erfasst wurde , die ich im Stammverzeichnis erstellt habe.Beachten Sie, dass Dateien im Stammverzeichnis nicht ignoriert werden, sondern nur Verzeichnisse :)
Hoffe das hilft.
quelle
Dies ist die einzige Datei, die in den meisten Fällen ignoriert wird, da Sie die Datei wp-config-sample.php haben, die Sie für andere freigeben können.
quelle