Ich kann scheinbar nicht verfolgte Inhalte in Gits Submodulen nicht loswerden. Laufende git status
Erträge:
# Auf Zweigstellenmaster # Änderungen, die nicht für das Festschreiben bereitgestellt wurden: # (Verwenden Sie "git add ...", um zu aktualisieren, was festgeschrieben wird.) # (Verwenden Sie "git checkout - ...", um Änderungen im Arbeitsverzeichnis zu verwerfen.) # (Festschreiben oder Verwerfen des nicht verfolgten oder geänderten Inhalts in Submodulen) # # geändert: Bundle / Snipmate (nicht verfolgter Inhalt) # geändert: Bundle / Surround (nicht verfolgter Inhalt) # geändert: Bundle / Trailing-Whitespace (nicht verfolgter Inhalt) # geändert: Bundle / Zen-Codierung (nicht verfolgter Inhalt) # Keine Änderungen zum Festschreiben hinzugefügt (verwenden Sie "git add" und / oder "git commit -a")
Durch Hinzufügen des --ignore-submodules
Parameters werden diese Meldungen ausgeblendet. aber ich frage mich, ob es einen Weg gibt, diesen Schmutz auf eine geeignetere, kernige Weise loszuwerden.
git
git-submodules
Tomer Lichtash
quelle
quelle
Antworten:
Da der Git-Status nicht verfolgten Inhalt meldet, besteht der eigentliche Weg, einen sauberen Status zu erhalten, darin, in jedes dieser Submodule zu gehen und:
.gitignore
bestimmten Modul..git/info/exclude
, wie peci1 Berichte in den Kommentaren .oder schmutzig Submodul Spezifikation hinzuzufügen, wie in erwähnt ezraspectre ‚s Antwort (upvoted).
oder fügen Sie eine globale
.gitignore
Datei hinzu (häufig~/.gitignore-global
). Wie zum Beispiel.DS_Store
oder in meinem Fall,Carthage/Build
wie von Marián Černý in den Kommentaren berichtet . Siehe.gitginore
Manpage :quelle
.DS_Store
, dass in einem meiner Submodule automatisch eine Datei (von OS X) erstellt wurde, die mich daran hinderte, das Hauptprojekt zu starten. Arg! Zeit zum Update.gitignore
....git/info/exclude
und fügen Sie dort die Ignorierzeilen hinzu (es funktioniert wie ein Gitignore, ist jedoch nicht Teil des gemeinsam genutzten Repositorys).Ich fand, dass dieser Blog-Beitrag insgesamt funktioniert. Durch Hinzufügen der
ignore = dirty
Option zu jedem Eintrag in der.gitmodules
Datei.quelle
ignore = untracked
auch vorhanden ist und geänderte verfolgte Dateien, aber keine nicht verfolgten Dateien angezeigt werden. Es wäre schön, wenn es eine globale Einstellung für alle Submodule geben würde ...Sie können auch zu jedem Submodul-Verzeichnis gehen und als separater Git fungieren. Beispielsweise:
... / erhält die Liste der geänderten Dateien /
Sie können auch Ihr Remote-Submodul-Repo mit aktualisieren
Nach alldem
quelle
git add .
Überprüfung der geänderten Dateien verzichten. Meistens handelt es sich bei den vorgenommenen Änderungen um die hinzugefügten.DS_Store
Dateien - dies sollte wahrscheinlich von Ihnen.gitignore
erfasst werden, wie zourtney im ersten Kommentar zur Antwort erwähnt hat.git submodule update --force
.Dies kann an der
detached HEAD
in Ihrem Submodul-Zweig liegen. Wenn dies der Fall ist, gehen Sie in Ihren Submodulpfad (zB :)./bundle/snipmate
und führen Sie ihn ausgit checkout master
.quelle
Ich habe mich gestern in einem Projekt mit fast 12 Submodulen mit diesem Thema beschäftigt.
git status
zeigte Ausgabe.Um die untracked Inhalt Fehler zu beheben, musste ich die untracked Dateien von allen Submodule entfernen (alle waren
*.pyc
,*.pyo
erzeugten Dateien von Python) unter Verwendung eines.gitignore
.Um das andere zu lösen, musste ich ausführen,
git submodule update
welches jedes der Submodule aktualisiert.quelle
In meiner Situation klone ich Module als Ausgangspunkt für ein neues Modul in meiner ZF2-Umgebung. Dazu wird ein eigener .git-Ordner in das Verzeichnis gestellt.
In diesem Fall können Sie den Ordner .git löschen (wahrscheinlich müssen Sie versteckte Dateien anzeigen, um ihn anzuzeigen).
quelle
Dies passiert wahrscheinlich, wenn Sie einen anderen .git [versteckten Ordner] in dem bestimmten Ordner haben.
geändert: ./../ .. (geänderter Inhalt, nicht verfolgter Inhalt)
Stellen Sie sicher, dass Ihr Unterverzeichnis diesen .git-Ordner nicht enthält.
In diesem Fall kann das Problem behoben werden, indem der Ordner .git manuell aus dem Unterverzeichnis gelöscht wird.
quelle
Ich bevorzuge die Verwendung von SourceTree , daher bestand die Lösung für mich darin, das Submodul-Repo in SourceTree zu öffnen, in dem die Liste aller nicht verfolgten Dateien angezeigt wird. Ich habe sie dann alle in einer Gruppe ausgewählt und dann "Entfernen" verwendet.
Ich konnte dies tun, weil ich wusste, dass alle nicht verfolgten Dateien nicht wirklich benötigt wurden.
quelle
Das hat für mich ganz gut geklappt:
Wenn es mit dem nicht funktioniert
pathname
, versuchen Sie es mit dem Dateinamen. Lassen Sie mich wissen, ob dies auch für Sie funktioniert hat.quelle
Wenn dies ein vorübergehendes Problem ist, können Sie in den Submodulordner gehen und es ausführen,
git reset HEAD --hard
aber Sie verlieren alle Ihre Änderungen innerhalb des Submoduls.quelle