Git: Ignorowanie Plików Sterowanych Wersjami

The .plik gitignore jest bardzo przydatny w ignorowaniu niektórych plików, których nie chcemy kontrolować. Niestety, nie można go użyć, gdy plik jest już pod kontrolą wersji. Na przykład, mój .plik gitignore (który jest już dodany do Gita) może być inny niż mój współpracownik (np. chcę zignorować pliki Vima). Za każdym razem, gdy wprowadzam zmiany w tym pliku, git pokazuje go jako zmodyfikowany plik. Więc moje pytania:

  1. Czy Jest jakiś sposób, aby zignorować zmiany dla pewnego plik, który jest już kontrolowany przez Git?!
  2. Czy Jest jakiś sposób, aby wprowadzić te zmiany, ale zachować je tylko dla siebie? Oczywiście nie chcę korzystać z gałęzi, ponieważ pracuję nad określoną gałęzią.
Author: msouth, 2011-01-08

6 answers

Jeśli chcesz wykluczyć pliki specyficzne dla Twojego procesu (takie jak pliki tymczasowe Vima), edytuj (lokalny) plik .git/info/exclude i dodaj tam swoje wzorce wykluczeń. Ten plik jest przeznaczony do wyłączeń specyficznych dla programistów, a nie .gitignore, który jest przeznaczony do wyłączeń obejmujących cały projekt.

Krótkie podsumowanie jest takie, że każdy powinien się zgodzić co do tego, co jest dodawane do .gitignore. W przypadku plików, na które nie wyrażasz zgody, użyj .git/info/exclude.

 11
Author: Greg Hewgill,
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
2011-01-08 12:30:56

Użyj git-update-index aby tymczasowo zignorować zmiany w plikach, które są już pod kontrolą wersji:

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

Aby cofnąć to użycie:

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

Spójrz również na opcje skip-worktree i no-skip-worktree dla update-index, jeśli potrzebujesz tego, aby utrzymać się poza git-reset

 102
Author: Aristotle Pagaltzis,
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
2012-05-02 17:33:34

Możesz użyć tego polecenia, aby uzyskać pożądane.

git rm --cached path/to/file

Lub

git rm -r --cached path/ignore/dir

Usunie tylko ścieżkę z Gita, nie usunie prawdziwych plików.

Następnie możesz edytować plik ignorowania, aby usunąć śledzenie tych plików lub dirs.

 5
Author: user1927627,
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
2015-08-03 14:52:43

Naprawdę nie mogę odpowiedzieć na ogólne Pytanie ( Git ignoruje śledzone pliki) - wydaje mi się, że funkcja byłaby o wiele bardziej szkodliwa niż użyteczna.

Jednakże strona podręcznika gitignore określa kilka sposobów konfigurowania wzorców dla wykluczonych plików.

W szczególności daje wyraźne instrukcje, jak korzystać z tych różnych sposobów:

  • wzorce, które powinny być kontrolowane i dystrybuowane do innych repozytoriów poprzez klonowanie (tzn. pliki, które wszyscy programiści będą chcieli zignorować) powinny trafić do pliku .gitignore.

Co oznacza, że Twój plik .gitignore nie powinien różnić się od twoich współpracowników - działa zgodnie z przeznaczeniem.

  • 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 zostać umieszczone w pliku $GIT_DIR/info/exclude.

  • Wzorce, które użytkownik chce, aby git ignorował we wszystkich sytuacjach (np. backup lub pliki tymczasowe generowane przez edytor użytkownika) zazwyczaj trafiają do pliku określonego przez core.excludesfile w ~/.gitconfig użytkownika.

Proszę bardzo. Określ ścieżkę pliku core.excludesfile do pliku ~/.gitconfig, a następnie umieść w nim wzorce, które chcesz wykluczyć.
 2
Author: Jean Hominal,
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
2011-01-08 11:52:48

Napisałem o trzech sposobach wyłączenia plików gdzie indziej.

W podsumowaniu:

  1. globalny plik Git ignore ma zastosowanie do wszystkich repozytoriów w tym systemie
  2. The .plik gitignore w repozytorium stosuje repozytorium i wszystkie klony tego repozytorium.
  3. The .plik git/info / exclude ma zastosowanie tylko do tego repozytorium.

Niższe pozycje na liście mają pierwszeństwo przed wyższymi, a ! przed pozycją w dowolnym z wzorce w pliku odwracają poprzednie wykluczenie.

Ten paradygmat jest widoczny gdzie indziej w Git. Na przykład, jeśli używasz podmoduł, adres url do podmodułu, którego chcesz użyć, znajduje się w pliku .gitmodules w repozytorium, ale możesz przesunąć adres url, aby użyć go w .plik Git / config.

 1
Author: Abizern,
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
2011-01-08 13:55:39

Oto uogólnione, ubiquitos (Nie indywidualne) rozwiązanie dla tych, którzy używają Git pod SmartGitHG viusal interface:

  • Wybierz folder, który chcesz zignorować w oknie "repozytoria";
  • Wybierz wszystkie pliki z tego folderu w oknie "pliki" (odkryj niezmienione pliki, klikając odpowiednią ikonę filtra w prawym górnym rogu okna głównego);
  • kliknij "Usuń" w Panelu sterowania (zaznacz pole wyboru "Usuń pliki lokalne", jeśli potrzebujesz);
  • commit local changes;
  • rightclick na folderze w oknie "repozytoria";
  • Kliknij "Ignoruj".
 0
Author: cubrman,
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
2014-10-09 19:33:24