it-swarm.com.de

Wie entferne ich den Git-Submodulen-Status nicht?

Ich kann mich anscheinend nicht mit unaufgezeichneten Inhalten in Gits Submodulen abfinden. Das Ausführen von git status ergibt:

 # Auf dem Zweigmaster 
 # Änderungen, die für das Festschreiben nicht bereitgestellt wurden: 
 # (Verwenden Sie "git add ...", um das Commit zu aktualisieren) 
 # (Verwenden Sie "git checkout - .. "um Änderungen im Arbeitsverzeichnis zu verwerfen) 
 # (Nicht festgehaltenen oder geänderten Inhalt in Submodulen festschreiben oder verwerfen) 
 # 
 # modified: bundle/snipmate (nicht protokollierter Inhalt) 
 surround (untracked content) 
 # modified: Bundle/Trailing-Whitespace (untracked content) 
 # modified: bundle/zencoding (untracked content) 
 # .__ "und/oder" git commit -a ") 

Durch das Hinzufügen des Parameters --ignore-submodules werden diese Meldungen ausgeblendet. Aber ich frage mich, ob es eine Möglichkeit gibt, diesen Dreck auf eine passendere, kernischste Weise loszuwerden.

127
Tomer Lichtash

Da der git-Status nicht protokollierte Inhalte meldet, besteht der eigentliche Weg für einen Bereinigungsstatus darin, in jedes dieser Submodule zu gehen und:

  • den nicht erfassten Inhalt hinzufügen und festlegen,
  • oder verweisen Sie auf den nicht erfassten Inhalt in einem .gitignore, der für jedes Modul spezifisch ist. 
  • oder Sie können den gleichen ignorierten Inhalt zum .git/info/exclude des Submoduls hinzufügen, als peci1 reports in den Kommentaren .
  • oder fügen Sie der Submodulspezifikation Dirty hinzu, wie in ezraspectre 's answer (upvoted) erwähnt.

    git config -f .gitmodules submodule.<path>.ignore untracked
    
  • 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 gemeldet. Siehe .gitginore man-Seite :

Muster, die ein Benutzer wünscht, dass Git in allen Situationen (z. B. Backup-Dateien oder temporäre Dateien, die vom Benutzer-Editor des Benutzers erstellt wurden) ignoriert werden, gehen im Allgemeinen in eine Datei, die durch core.excludesFile im Benutzercode ~/.gitconfig des Benutzers angegeben wird. Der Standardwert ist $XDG_CONFIG_HOME/git/ignore. Wenn $XDG_CONFIG_HOME entweder nicht festgelegt oder leer ist, wird stattdessen $HOME/.config/git/ignore verwendet.

78
VonC

Ich fand diesen blog post um insgesamt zu arbeiten. Durch Hinzufügen der ignore = dirty-Option zu jedem Eintrag in der .gitmodules-Datei.

[submodule "zen-coding-gedit3"]
    path = zen-coding-gedit3
    url = git://github.com/leafac/zen-coding-gedit3.git
    ignore = dirty
128
ezraspectre

Sie können auch zu jedem Untermodul-Verzeichnis gehen und als getrennte git ..__ fungieren. Beispiel:

cd my/project/submodule
git status

... / ruft die Liste der modifizierten Dateien auf /

git add .  //to add all of them to commit into submodule
git commit -m "message to your submodule repo"

sie können auch Ihr Remote-Submodul-Repo mit aktualisieren

git submodule update

letztendlich

10
Ricardo Martins

Dies liegt an dem detached HEAD in Ihrem Untermodulzweig. Gehen Sie in den Submodulpfad (Beispiel: ./bundle/snipmate) und dann git checkout master

Ich hoffe das wird helfen :)

3
Browny Lin

Ich habe mich gestern bei diesem Thema festgefahren, bei einem Projekt, das fast 12 Submodule hatte.

git status zeigte die Ausgabe an.

# On branch master
# Changes not staged for commit:
#   (use "git add ..." to update what will be committed)
#   (use "git checkout -- ..." to discard changes in working directory)
#   (commit or discard the untracked or modified content in submodules)
#
#   modified:   proj1 (untracked content)
#   modified:   proj1 (modified content, untracked content)
#   ...

Um den Fehler des nicht aufgespürten Inhalts zu beheben, musste ich die nicht aufgespürten Dateien von allen Submodulen entfernen (alle waren *.pyc, *.pyo-Dateien, die von Python generiert wurden), wobei ein .gitignore verwendet wurde.

Um das andere aufzulösen, musste ich git submodule update ausführen, wodurch jedes der Submodule aktualisiert wurde.

1
mu 無

Das hat für mich gut funktioniert:

git update-index --skip-worktree 

Wenn es nicht mit dem Pfadnamen funktioniert, probieren Sie den Dateinamen . Lassen Sie mich wissen, ob dies auch für Sie funktioniert hat.

Tschüss!

0
DarkCrazy

Ich bevorzuge die Verwendung von SourceTree , daher bestand die Lösung für mich darin, das Submodul repo in SourceTree zu öffnen, das mir eine Liste aller nicht verfolgten Dateien anzeigt. Ich habe sie dann 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.

0
Glenn Lawrence

Dies ist wahrscheinlich der Fall, wenn sich in diesem Ordner ein anderer .git [versteckter Ordner] Befindet.

modifiziert: ./../ .. (modifizierter Inhalt, nicht erfasster Inhalt)

stellen Sie sicher, dass Ihr Unterverzeichnis diesen .git-Ordner nicht enthält.

In diesem Fall kann das Problem gelöst werden, indem der .git-Ordner manuell aus dem Unterverzeichnis gelöscht wird.

0

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 besteht die Lösung darin, den .git-Ordner zu löschen (wahrscheinlich müssen Sie versteckte Dateien anzeigen, um ihn anzuzeigen).

0
HappyCoder