2010-08-30 13 views
8

Załóżmy, że mam plik .noise w katalogu głównym mojego repozytorium. Ten plik jest często modyfikowany i zatwierdzany do zdalnego repozytorium przez innych członków mojego zespołu.Ignorowanie plików znajdujących się już w repo, BEZ ich usuwania

Chcę całkowicie zignorować ten plik, podczas gdy ja sam coś popełniam, ale nadal chcę pobrać zmiany od innych i nie chcę usuwać tego pliku. Jeśli używam .git/info/exclude, to muszę mieć plik git rm --cached, aby nie pojawiał się w repozytorium.

teraz robi, że przynosi mi:

# 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") 

do:

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

'zmian, które zostaną przeznaczone' mnie przeraża. Nie chcę wcisnąć usunięcia .noise z powrotem do zdalnego, nie chcę, aby został usunięty na moim filessytem albo. Po prostu nie chcę, żeby Git widział lub miał z tym coś wspólnego. I myśli, że git rm --cached nie miał wprowadzić żadnych zmian? Czy tak nie jest?

Wszelkie pomysły?

+0

Czy zmieniasz ten plik samodzielnie? Czy chcesz zobaczyć zdalne zmiany tego pliku w drzewie roboczym? – Shcheklein

Odpowiedz

14

Można użyć:

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

update-index --assume-unchanged uczyni Git nadal śledzić plik, ale twoi zmiany nie zostaną odzwierciedlone w indeksie lub dodany do repo.

+0

O ile rozumiem, ten sposób zadziała, jeśli plik będzie faktycznie niezmieniony. Git nie będzie w stanie pobrać zatwierdzeń, które w jakiś sposób modyfikują ten plik: "Git zawiedzie (z wdziękiem) w przypadku, gdy będzie musiał zmodyfikować ten plik w indeksie, np. Podczas łączenia w zatwierdzenie, a więc w przypadku zmiany założonego-nieśledzonego pliku w górę, będziesz musiał obsłużyć sytuację ręcznie. " (Patrz git-update-index (1)) – Shcheklein

+0

'git update-index --assume-unchanged' to coś, co próbowałem jakiś czas temu. Bez efektu! Dodanie '- .noise' wydawało się to robić. Teraz jest interesujący, ponieważ uważam, że update-index w zasadzie przejął katalog, szukając zmian. Nie wiedziałem, że trzeba wzywać poszczególnych plików. Dzięki. –

+0

@Shcheklein "Git nie będzie w stanie pobrać komend, które w jakiś sposób modyfikują ten plik" Cóż, może to nie jest ostateczne rozwiązanie. Będę musiał przetestować i sprawdzić, czy zdalne zatwierdzenia nie zostaną usunięte. –

Powiązane problemy