2013-06-19 21 views
300

Sposób, w jaki git ignorujesz oglądanie/śledzenie konkretnego katalogu/pliku. po prostu uruchomić to:cofnij aktualizację git-index --assume-unchanged <file>

git update-index --assume-unchanged <file>

Teraz jak można cofnąć, więc są one znowu patrzył? (pozwala nazywać to nieprzypuszczeniem)

+2

Wystarczy napisać, że wygląda na to, że skip-worktree jest najprawdopodobniej tym, czego lepiej używać, niż zakładać - niezmienionym, chyba że wydajność gita jest twoim problemem. http://stackoverflow.com/questions/13630849/git-difference-between-assume-unchanged-and-skip-worktree – GreenAsJade

Odpowiedz

400

Aby cofnąć/pokaz dir/plików, które są ustawione założyć-niezmienione run to:

git update-index --no-assume-unchanged <file>

Aby uzyskać listę dir/plików, które są assume-unchanged run to:

git ls-files -v|grep '^h'

+4

Drobne ulepszenie Twojej instrukcji grep, może użyć '^ [az]' do przechwycenia wszystkich ignorowanych plików, ponieważ pierwsza litera może być literą inną niż "H"/"h". Od http://git-scm.com/docs/git-ls-files: Ta opcja określa stan plików z następującymi tagami (spację) na początku każdej linii: \t H :: \t buforowane \t S :: \t przeskakiwanie worktree \t M :: \t niescalone \t R :: \t usunięto/usunięte \t C :: \t zmodyfikowane/zmienione \t K :: \t do zabicia \t?:: \t inne – Bdoserror

+3

Inną użyteczną sztuczką jest 'git ls-files -v | grep '^ h' | cut -c3-', która da ci tylko nazwy plików, bez prefiksu "h". – Retsam

+4

Jeśli nie znasz już plików, które "zakładaj - niezmienione", po prostu użyj 'git update-index --really-refresh'. Za pomocą tego polecenia nie trzeba najpierw szukać plików z 'git ls-files'. – theDmi

26

Zakładam (heh) miałeś na myśli --assume-unchanged, ponieważ nie widzę żadnej opcji --assume-changed. Odwrotność --assume-unchanged jest .

11

Dodawanie do odpowiedzi @adardesign „s, jeśli chcesz zresetować Pliki LL, które zostały dodane do assume-unchanged liście do no-assume-unchanged za jednym razem, można wykonać następujące czynności:

git ls-files -v | grep '^h' | sed 's/^..//' | sed 's/\ /\\ /g' | xargs -I FILE git update-index --no-assume-unchanged FILE || true 

To będzie po prostu rozebrać się wyjście dwa znaki z grep tj "h ", następnie uciec wszelkie przestrzenie, które mogą być obecne w nazwach plików i wreszcie || true uniemożliwi przedwczesne zakończenie polecenia w przypadku błędów w niektórych plikach w pętli. Funkcja update-index

29

git ma kilka opcji można znaleźć wpisując poniżej:

git update-index --help 

Tutaj znajdziesz różne opcję - jak radzić sobie z funkcji update-index.

[jeśli nie wiem nazwa pliku]

git update-index --really-refresh 

[jeśli znasz nazwę pliku]

git update-index --no-assume-unchanged <file> 

będzie przywrócić wszystkie pliki te zostały dodane w listy ignorowanych przez .

git update-index --assume-unchanged <file> 
+0

git update-index - odświeżaj, cofaj wszystkie założenia - niezmienione, które zrobiłem, dziękuję za podpowiedź –

+0

Dzięki za "git update-index --really-refresh" – reignsly

+0

'git update-index --no- assume-unchanged "uratowało mi życie ... ok, mógłbym ponownie zsynchronizować folder, ale chciałem" prawdziwe "rozwiązanie tego problemu. –

56

Jeśli jest to polecenie, którego często używasz - możesz rozważyć posiadanie również jego aliasu. Dodaj do swojej globalnej .gitconfig:

[alias] 
    hide = update-index --assume-unchanged 
    unhide = update-index --no-assume-unchanged 

Po zapisaniu tego na swoją .gitconfig, można uruchomić komendę czystsze.

git hide myfile.ext 

lub

git unhide myfile.ext 

Ten resource był bardzo pomocny

13

Jeśli chcesz cofnąć wszystkie pliki, które zostały zastosowane zakładać niezmienione z jakiegokolwiek stanu, nie tylko w pamięci podręcznej (git oznacza je po znaku w małe litery), możesz użyć następującej komendy:

git ls-files -v | grep '^[a-z]' | cut -c 3- | tr '\012' '\000' | xargs -0 git update-index --no-assume-unchanged 
  1. git ls-files -v drukuje wszystkie pliki z ich statusem
  2. grep '^[a-z]' będą filtrować pliki i wybrać tylko przypuszczać niezmienione
  3. cut -c 3- usunie stanu i zostawić tylko ścieżki, cięcie z 3-cim znaku do końca
  4. tr '\012' '\000' będzie zastąpić znak końca wiersza (\ 012) do zera znaku (\ 000)
  5. xargs -0 git update-index --no-assume-unchanged przejdzie wszystkie ścieżki oddzielone przez zero znaku git update-index --no-assume-unchanged cofnąć
1

Jeśli używasz Git Extensions, a następnie wykonaj poniższe czynności:

  1. Go do popełnienia okno.
  2. Kliknij menu rozwijane o nazwie Zmiany w katalogu roboczym.
  3. Wybierz opcję Pokaż niezmienione pliki.
  4. Kliknij prawym przyciskiem myszy plik, który chcesz usunąć.
  5. Wybierz Nie zmieniaj niezmiennego.

Skończyłeś.