2017-03-21 3 views
0

ich eine globale .gitignore wie dieseglobal vs lokalen .gitignore Konflikt

# global .gitconfig 
[core] 
    quotepath = false 
    excludesfile = ~/.gitignore_global 

eingestellt haben Wo ~/.gitignore_global so etwas wie dieses:

# https://www.gitignore.io/api/pycharm 

# User-specific stuff: 
.idea/**/workspace.xml 
.idea/**/tasks.xml 
.idea/**/vcs.xml 
.idea/**/jsLibraryMappings.xml 
# .idea/**/dictionaries 

# Sensitive or high-churn files: 
.idea/**/dataSources/ 
.idea/**/dataSources.ids 
.idea/**/dataSources.xml 
.idea/**/dataSources.local.xml 
.idea/**/sqlDataSources.xml 
.idea/**/dynamic.xml 
.idea/**/uiDesigner.xml 

# Gradle: 
.idea/**/gradle.xml 
.idea/**/libraries 

# Mongo Explorer plugin: 
.idea/**/mongoSettings.xml 

## File-based project format: 
*.iws 

## Plugin-specific files: 
# IntelliJ 
/out/ 

# mpeltonen/sbt-idea plugin 
.idea_modules/ 

# JIRA plugin 
atlassian-ide-plugin.xml 

# Crashlytics plugin (for Android Studio and IntelliJ) 
com_crashlytics_export_strings.xml 
crashlytics.properties 
crashlytics-build.properties 
fabric.properties 

jetzt Also, wenn ich ein neues Projekt mit jedem Start Intellij IDE nur einige Dateien im Ordner .idea werden verfolgt und andere nicht. So fa so gut.

Das Problem kommt von einem Projekt, das ich vor der Einrichtung der .gitignore_global gestartet habe. Tatsächlich hatte ich in diesem Projekt ein lokales .gitignore eingerichtet, um den Ordner .idea/ zusammen zu ignorieren.

# local .gitignore created before the global one 
*.idea/ 

Nun, für das alte Projekt, das ich im .idea Ordner starten möchten die entsprechenden Dateien zu verfolgen, also habe ich die Linie # *.idea/ kommentiert.

Und hier beginnt das Problem.

Anstatt nur die relevanten Dateien Tracking wie in .gitignore_global es Zeichen als neue Datei (unstaged) alle Dateien im Ordner .idea angegeben, die .gitignore_global (sorry für die Redundanz) zu ignorieren.

Ich vermute (nicht sicher), dass damals, vor Jahren hatte ich versehentlich die .idea Ordner zum Repo hinzugefügt, dann entfernt, dann ignoriert.

Wie kann ich das beheben? Ich möchte nur die relevanten Dateien in .idea verfolgen, die nicht als ignoriert markiert sind, indem ich der Anweisung von .gitignore_global folge.

BEARBEITEN: der wichtige Teil ist, dass Git ich alle neuen Dateien zum Staging-Bereich hinzufügen, auch diejenigen, die nicht sollten.

+0

Hatten die Dateien unter früheren Commits sollte nicht von Bedeutung sein. (Wenn es wirklich wichtig wäre, hätten Sie Probleme gehabt, wenn Sie das gesamte Verzeichnis lokal gespeichert haben.) Wahrscheinlich ist die Konfiguration für diesen Repo irgendwie nicht korrekt eingerichtet, um die globale Ignorierdatei zu verwenden. –

+0

Ich habe die .git/config-Datei des Repos geöffnet und es scheint nichts abnormales zu haben. Es ist ähnlich zu anderen config von anderen Projekten, die tatsächlich als erwartet arbeiten – Leonardo

+1

Hmm ... nun, ich habe einen schnellen Test - einschließlich Hinzufügen von 3 Dateien in einem Verzeichnis, zu begehen; Entfernen der Dateien aus dem Index, Ignorieren des Verzeichnisses, Festschreiben; Hinzufügen einer globalen Ignorierung für eine der Dateien, Auskommentieren der lokalen Ignorierung für das Verzeichnis.'git status' hat dann' foo/'als nicht geparkt gemeldet, aber wenn ich es 'hinzugefügt' habe, hat es nur die zwei Dateien wie erwartet inszeniert ... Also stimmt etwas anderes nicht. –

Antwort

0

Es stellte sich heraus, dass ich 2 .idea/ Verzeichnisse hatte.

Ein wurde von pycharm auf der ersten Ebene erstellt, wo auch die .git dir lebt und die andere begraben mehrere Ebenen Targeting meiner webapp von webstorm erstellt.

Der eine auf der ersten Ebene war richtig das Hinzufügen/Ignorieren von Dateien, die eine tief unten war nicht.

Der triviale Grund war, dass Regexs wie diese .idea/**/workspace.xml auf meinem globalen gitignore waren nur Targeting ersten Ebene.

Damit dies funktioniert, wo auch immer das .idea dir in meinem Repo leben würde, musste ich diese Regexs in das Formular **/.idea/**/workspace.xml ändern.