Ich habe eine Site mit einem /sites/default/files/
Verzeichnis, in dem Benutzerinhalte normalerweise gespeichert werden. Als ich herausfand, dass ich dieses Zeug nicht verfolgen muss, fügte ich meiner .gitignore-Datei / sites / default / files / hinzu.
Dann entdeckte ich, dass ich auch einige meist permanente Uploads in diesem Verzeichnis behalten wollte. Jetzt ist es sinnvoller, alles in / sites / default / files / zu verfolgen und unerwünschte Unterverzeichnisse auszuschließen, anstatt es umgekehrt zu machen.
Das Problem ist, dass Git nicht aufhört, dieses Verzeichnis zu ignorieren. Ich habe die Zeilen aus .gitignore entfernt, die dieses Verzeichnis angeben, und es wird nicht verfolgt. Ich habe die Option, git add /sites/default/files/ -f
um git zu zwingen, das Verzeichnis zu verfolgen, aber ich habe das schon einmal gemacht und es scheint chaotisch.
Wenn .gitignore dieses Verzeichnis nicht mehr als ignoriert angibt, warum sollte ich Git zwingen, diese Dateien zu verfolgen?
git add -f sites/default/files/*
, die spezifischen Dateien hinzuzufügen, anstatt das Verzeichnis hinzuzufügen.git add -f sites/default/files/*
es nicht zu tun: Wenn ich estouch sites/default/files/test.mine
tue, sehe ich es immer noch nicht..gitignore
diesem Match keine anderen Einträge gibt - irgendeinen Platzhalter oder so? Oder etwas, das dazu führen würde, dass die einzelnen Dateien ignoriert werden - wie a*.pyc
und dieses Verzeichnis, das nur.pyc
Dateien enthält? Denken Sie daran, dass die Benennungfile
in.gitignore
auch mit einemsubdirectory/file
odersub/subdir/file
...files/
versteckt unter einigen anderen Sachen und ich suchtesites/default/..
. Nun , das war eine Menge Mühe wegen eines dummen Fehlers. Seufzer. Vielen Dank.Antworten:
Sie wissen schon, wie es geht. Ja,
git add -f
ist der Weg.Wenn du fragst warum ... liegt das daran, dass Git ein
assume-unchanged
bisschen intern eingestellt ist. Dieses Bit lässt git denken, dass die Datei nicht geändert wurde, alsogit add
wird sie nicht hinzugefügt.Wenn Sie mit den Implementierungsdetails herumspielen möchten, können Sie den
git update-index --no-assume-unchanged <file>
Befehl verwenden.quelle
.gitignore
sollten in der Versionskontrolle sein. Andere Entwickler sollten es erhalten, wenn sie aktualisieren.-f
Fix für seine lokalen Repos verwenden muss..gitignore
bekommen sie auch deine/sites/default/files
. Diese Dateien werden korrekt verfolgt.Ich denke nicht, dass J-16 richtig ist. Von http://www.kernel.org/pub/software/scm/git/docs/git-add.html :
git add -f
scheint nur zum Hinzufügen einer Datei zu dienen, die irgendwo in einer Ignorierdatei vorhanden ist.Vielleicht gibt es eine andere .gitignore-Datei in / sites oder / sites / default, die Git ebenfalls anweist, dieses Verzeichnis zu ignorieren, oder vielleicht wurde sie in .git / info / exclude festgelegt?
quelle
git add file
funktioniert.git add
git mache, das mir sagt, dass das Verzeichnis von einer meiner .gitignore-Dateien ignoriert wird. Ich habe mein lokales Repository nach .gitignore durchsucht und nur eines gefunden, die Ausschlussdatei geöffnet und überprüft, ob sie nicht stört. Bin ich etwas fehlt?Für die Nachwelt: Die Antwort auf mein Problem war "schau genauer hin".
@twalberg wies richtig darauf hin, dass es eine Regel geben könnte, die ich in der .gitignore-Datei übersehen habe. Die kaskadierende Art und Weise, in der die .gitignore-Regeln angewendet werden, macht es einfach, Dateien breiter als beabsichtigt auszuschließen.
Soweit ich das beurteilen kann, waren die Annahmen, die ich über die Funktionsweise von Git gemacht habe, korrekt. In ähnlicher Weise scheint mein Fall die Kommentare von @ J-16 SDiZ zu der Rolle, die das
assume-unchanged
Bit spielen könnte, nicht zu unterstützen (oder zu widerlegen) .quelle
Wir hatten ein sehr ähnliches Problem in unserem Drupal-Site-Verzeichnis. Das Problem ist, dass die Drupal-Distribution eine .gitignore-Datei im übergeordneten Drupal-Verzeichnis enthält, die mit allen Elementen in drupal / sites / files / * übereinstimmt
quelle
In meinem Fall
.png
und.xlsx
Dateien wurden in der Repo ignoriert. Wie @ Doub1ejack, @ J-16 SDiZ und andere angegeben haben, müssen Sie verwendengit add -f
, um die Änderungen zu verfolgen. Funktioniert jedoch nur,git add -f
wenn Sie die Dateien oder Muster explizit angeben und als antwortenNothing specified, nothing added.
Maybe you wanted to say 'git add .'?
So starten Sie die Verfolgung zuvor ignorierter Dateien oder Muster:
cd <path>
.git add -f <file name>.extension
für eine bestimmte Datei odergit add -f *.xlsx
für alle Excel-Dateien eingeben .Dies ignorierte die ignorierten Dateien für meinen Fall. Sie können dieses YouTube-Video auch überprüfen .
quelle