Ignorieren
versionierter!Dateien
in#Git
©"Stephan"Partzsch,"2015 1
Ignorieren(neuer(Dateien
• .gitignore"System"für"generellen"Ausschluss"neuer"Dateien
• Automa7sch"generierte"Log9Dateien"oder"Build9Dateien
• .gitignore"funk7oniert"nicht"bei"versionierten"Dateien
©"Stephan"Partzsch,"2015 2
Ignorieren(versionierter(Dateien
!!assume!unchanged
• Gedacht)um)ineffiziente)Dateisysteme)zu)entlasten
• Einstellung)wird)in)einigen)Fällen)überschrieben
• git reset --hard
• Pull)neuerer)Version)aus)dem)Remote@Repository)
©"Stephan"Partzsch,"2015 3
Ignorieren(versionierter(Dateien
!!assume!unchanged
• Gedacht)um)ineffiziente)Dateisysteme)zu)entlasten
• Einstellung)wird)in)einigen)Fällen)überschrieben
• git reset --hard
• Pull)neuerer)Version)aus)dem)Remote@Repository)
©"Stephan"Partzsch,"2015 4
Neuer%Versuch!
©"Stephan"Partzsch,"2015 5
Ignorieren(versionierter(Dateien
!!skip!worktree
• Normale)Git-Rou0nen)bleiben)erhalten
• Ignoriert)bewusst)Änderungen)im)Worktree
• Einstellung)wird)nicht)überschrieben!!!
©"Stephan"Partzsch,"2015 6
Ignorieren(versionierter(Dateien
!!skip!worktree
• !Stashen*der*Dateien*klappt*nicht,*wenn*Einstellung*ak8v*ist!
• Einstellung*für*betroffene*Dateien*müssen*vorher*manuell*
deak8viert*werden
©"Stephan"Partzsch,"2015 7
Anwendung
©"Stephan"Partzsch,"2015 8
Versionierte)Datei)ignorieren
git update-index --skip-worktree <file>
©"Stephan"Partzsch,"2015 9
Versionierte)Datei)wieder&berücksich-gen
git update-index --no-skip-worktreegits <file>
©"Stephan"Partzsch,"2015 10
Ignorierte)Dateien)finden
git ls-files -v | grep ^[sS]
©"Stephan"Partzsch,"2015 11
Manko
©"Stephan"Partzsch,"2015 12
Kollabora'on
• Einstellungen+sind+nur+lokal
• Jeder+muss+die+Commands+selbst+ausführen
• Lösung:"Script,"das"alle"Commands"ausführt
• Script"wird"nach"erstem"Checkout"gestartet"
©"Stephan"Partzsch,"2015 13
Beispiel
©"Stephan"Partzsch,"2015 14
Beispiel'–'Git$Repository$anlegen
// Create git repository
$ mkdir git-test
$ cd git-test
$ git init
Initialized empty Git repository in …
©"Stephan"Partzsch,"2015 15
Beispiel'–'Datei&zum&Repository&hinzufügen
$ echo ‘Hello World’ > file01.txt
$ git add file01.txt
$ git commit -m ‘Adds a new file.’
[master (root-commit) a6053cf] Adds a new file.
1 file changed, 1 insertion(+)
create mode 100644 file01.txt
©"Stephan"Partzsch,"2015 16
Beispiel'–'Datei&verändern
$ echo ‘here are some changes’ >> file01.txt
$ git status
On branch master
Changes not staged for commit:
(use “git add <file>...” to update what will be committed)
(use “git checkout -- <file>...” to discard changes in working directory)
modified: file01.txt
no changes added to commit (use “git add” and/or “git commit -a”)
©"Stephan"Partzsch,"2015 17
Beispiel'–'Datei&ignorieren
$ git update-index --skip-worktree file01.txt
$ git status
On branch master
nothing to commit, working directory clean
©"Stephan"Partzsch,"2015 18
Beispiel'–'Datei&wieder&berücksich0gen
$ git update-index --no-skip-worktree file01.txt
$ git status
On branch master
Changes not staged for commit:
(use “git add <file>...” to update what will be committed)
(use “git checkout -- <file>...” to discard changes in working directory)
modified: file01.txt
no changes added to commit (use “git add” and/or “git commit -a”)
©"Stephan"Partzsch,"2015 19
English!blog!post
h"p://blog.stephan0partzsch.de/how0to0ignore0changes0in0
tracked0files0with0git
@StephanPartzsch
©"Stephan"Partzsch,"2015 20

Ignorieren versionierter Dateien in Git