Jak skonfigurować git do ignorowania niektórych plików lokalnie?

Czy Mogę ignorować pliki lokalnie bez zanieczyszczania globalnego git config dla wszystkich innych? Mam nie śledzone pliki, które są spamem w moim statusie git, ale nie chcę wprowadzać zmian w konfiguracji git dla każdego małego losowego pliku, który mam w moich lokalnych oddziałach.

Author: Bjorn Tipling, 2009-11-18

9 answers

Z odpowiedniej dokumentacji Git :

Wzorce, które są specyficzne dla konkretnego repozytorium, ale nie muszą być współdzielone z innymi powiązanymi repozytoriami (np. pliki pomocnicze, które żyją w repozytorium, ale są specyficzne dla przepływu pracy jednego użytkownika), powinny trafić do pliku $GIT_DIR/info/exclude.

Plik .git/info/exclude ma taki sam format jak każdy plik .gitignore. Inną opcją jest ustawienie core.excludesFile na nazwę pliku zawierającego wzorce globalne.

Uwaga, jeśli po edycji ignorowanych wzorców musisz uruchomić następujące zmiany:

git update-index --assume-unchanged [<file>...]

uwaga na $GIT_DIR: jest to zapis używany w podręczniku git po prostu do wskazania ścieżki do repozytorium git. Jeśli zmienna środowiskowa jest ustawiona, to nadpisze lokalizację repo, w którym się znajdujesz, co prawdopodobnie nie jest tym, czego chcesz.

 1349
Author: Josh Lee,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-11-08 23:29:25

Update: rozważ użycie git update-index --skip-worktree [<file>...] zamiast tego, dzięki @danShumway! Zobacz Wyjaśnienie Borealida na temat różnicy dwóch opcji .


Stara ODPOWIEDŹ:

Jeśli chcesz zignorować lokalne zmiany śledzonych plików (mamy to z lokalnymi modyfikacjami plików konfiguracyjnych), użyj git update-index --assume-unchanged [<file>...].

 376
Author: Florian Sesser,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-09-19 03:53:04

Dodaj następujące wiersze do sekcji [alias] twojego .plik gitconfig

ignore = update-index --assume-unchanged
unignore = update-index --no-assume-unchanged
ignored = !git ls-files -v | grep "^[[:lower:]]"

Teraz możesz użyć git ignore my_file, Aby zignorować zmiany w pliku lokalnym i git unignore my_file, aby przestać ignorować zmiany. git ignored wyświetla listę ignorowanych plików.

Ta odpowiedź została zaczerpnięta z http://gitready.com/intermediate/2009/02/18/temporarily-ignoring-files.html .

 130
Author: phatmann,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-08-19 15:21:38

Masz kilka opcji:

  • pozostaw brudny (lub niezakontraktowany) .gitignore plik w katalogu roboczym (lub zastosuj go automatycznie za pomocą topgit lub innego tego typu narzędzia).
  • Umieść excludes w pliku $GIT_DIR/info/exclude, jeśli jest to specyficzne dla jednego drzewa.
  • Uruchom git config --global core.excludesfile ~/.gitignore i dodaj wzorce do swojego ~/.gitignore. Opcja ta ma zastosowanie, jeśli chcesz zignorować pewne wzorce na wszystkich drzewach. Używam tego na przykład do plików .pyc i .pyo.

Także, upewnij się, że używasz wzorców, a nie jawnie wyliczasz pliki, jeśli ma to zastosowanie.

 92
Author: Emil Sit,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-11-18 19:21:17

Myślę, że szukasz:

git update-index --skip-worktree FILENAME

Które ignorują zmiany dokonane lokalnie

Oto http://devblog.avdi.org/2011/05/20/keep-local-modifications-in-git-tracked-files / więcej wyjaśnień na temat tych rozwiązań!

 41
Author: Piotr Korlaga,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-03-01 15:22:39

Możesz zainstalować kilka aliasów git, aby uprościć ten proces. Edytuje węzeł {[1] } Twojego pliku .gitconfig.

git config --global alias.ignore 'update-index --skip-worktree'
git config --global alias.unignore 'update-index --no-skip-worktree'
git config --global alias.ignored '!git ls-files -v | grep "^S"'
W tym celu należy skontaktować się z działem obsługi klienta.]}
  • git ignore config.xml
    • git będzie udawał, że nie widzi żadnych zmian na config.xml - zapobiegając przypadkowemu popełnieniu tych zmian.
  • git unignore config.xml
    • git wznowi uznawanie Twoich zmian do config.xml - pozwalając ci ponownie zatwierdzić te zmiany zmiany.
  • git ignored
    • git wyświetli listę wszystkich plików, które "ignorujesz" w sposób opisany powyżej.

Zbudowałem je odwołując się do odpowiedzi phatmanna - która przedstawia --assume-unchanged wersję tego samego.

Prezentowana przeze mnie wersja używa --skip-worktree do ignorowania lokalnych zmian. Zobacz odpowiedź Borealida , aby uzyskać pełne wyjaśnienie różnicy, ale zasadniczo --skip-worktree celem jest dla programistów zmiana plików bez ryzyka popełnienia ich zmian .

Przedstawione tutaj polecenie git ignored używa git ls-files -v i filtruje listę tak, aby pokazywała tylko te wpisy zaczynające się od tagu S. Znacznik S oznacza plik, którego status to "pomiń obszar roboczy". Pełna lista stanów plików pokazana przez git ls-files: zobacz dokumentację dla opcji -t na git ls-files.

 36
Author: Birchlabs,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-11-03 13:00:39

Możesz po prostu dodać .plik gitignore do katalogu domowego, np. $HOME/.gitignore lub ~/.gitignore. Następnie powiedz gitowi, aby użył tego pliku za pomocą polecenia:

git config --global core.excludesfile ~/.gitignore
To jest normalne .plik gitignore, do którego Git odwołuje się przy podejmowaniu decyzji, co ma ignorować. Ponieważ znajduje się w Twoim katalogu domowym, dotyczy tylko Ciebie i nie zanieczyszcza żadnego projektu .pliki gitignore.

Używam tego podejścia od lat z doskonałymi wynikami.

 26
Author: JESii,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-07-26 14:32:35

Nie zapomnij przyznać się do jednego faktu, odpowiadając @joss lee.

    git update-index --assume-unchanged directory/

Zwróć uwagę na ukośnik(/) na końcu.

 1
Author: bijoy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-02-07 13:31:23

Jeśli twój repo jeszcze nie ma .pliku gitignore, a następnie prostym rozwiązaniem jest utworzenieplik gitignore, a w nim Dodaj .gitignore do listy plików, które mają być ignorowane.

 0
Author: g.rocket,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-08-08 21:34:35