2010-08-30 4 views
8

Nehmen wir an, ich habe eine .noise Datei im Stammverzeichnis meines Repository. Diese Datei wird häufig von anderen in meinem Team geändert und an den Remote-Repo übergeben.Ignorieren von Dateien bereits in einem Repo ohne sie zu löschen

Ich möchte diese Datei vollständig ignorieren, während ich selbst etwas begehe, aber ich möchte immer noch die Änderungen von den anderen übernehmen, und ich möchte die Datei nicht löschen. Wenn ich .git/info/exclude verwende, dann muss ich die Datei git rm --cached so, dass es nicht im Repo angezeigt wird.

Nun, da tut bringt mich aus:

# On branch master 
# Changed but not updated: 
# (use "git add <file>..." to update what will be committed) 
# (use "git checkout -- <file>..." to discard changes in working directory) 
# 
# modified: .noise 
# 
# No changes added to commit (use "git add" and/or "git commit -a") 

zu:

# On branch master 
# Changes to be committed: 
# (use "git reset HEAD <file>..." to unstage) 
# 
# deleted: .noise 
# 

Die 'Änderungen festgeschrieben werden' macht mir Angst. Ich möchte nicht das Löschen von .noise zurück auf die Fernbedienung drücken, ich will es auch nicht auf meinem filesytem gelöscht. Ich will einfach nicht, dass Git etwas sieht oder etwas damit zu tun hat. I dachte, dass git rm --cached sollte keine Änderungen vornehmen? Ist das nicht so?

Irgendwelche Ideen?

+0

Ändern Sie diese Datei selbst? Möchten Sie entfernte Änderungen dieser Datei in Ihrem Arbeitsbaum sehen? – Shcheklein

Antwort

14

können Sie verwenden:

$ git update-index --assume-unchanged -- .noise 

update-index --assume-unchanged machen Git weiterhin die Datei verfolgen, aber Ihre Änderungen werden nicht im Index oder hinzugefügt, um die Repo widerspiegeln.

+0

Soweit ich verstehe, wird dieser Weg funktionieren, wenn die Datei tatsächlich unverändert ist. Git wird keine Commits ziehen, die diese Datei irgendwie modifizieren: "Git wird (würdevoll) fehlschlagen, falls es diese Datei im Index ändern muss, zB wenn ein Commit verschmolzen wird, also falls die angenommene-nicht-verfolgte Datei upstream geändert wird, Sie müssen die Situation manuell behandeln. " (Siehe git-update-index (1)) – Shcheklein

+0

'git update-index --assume-unverändert' ist etwas, was ich vor einiger Zeit ausprobiert habe. Kein Effekt! Hinzufügen der '- .noise' schien es zu tun. Jetzt ist es interessant, weil ich dachte, update-index durchläuft das Verzeichnis im Grunde genommen nach Änderungen suchen. Ich wusste nicht, dass es an einzelnen Dateien aufgerufen werden musste. Vielen Dank. –

+0

@Shcheklein "Git wird keine Commits ziehen, die diese Datei irgendwie modifizieren" Nun, vielleicht ist das nicht die Lösung für alle, die dann alle sind. Ich muss testen und überprüfen, ob Remote-Commits abgebaut werden. –

Verwandte Themen