Ignoruj zmiany plików za pomocą usługi Git

Azure DevOps Services | Azure DevOps Server 2022 — Azure DevOps Server 2019

Visual Studio 2019 | Visual Studio 2022

Usługa Git nie powinna śledzić każdego pliku w projekcie. Pliki tymczasowe ze środowiska programistycznego, danych wyjściowych testów i dzienników to wszystkie przykłady plików, które prawdopodobnie nie muszą być śledzone.

Możesz użyć różnych mechanizmów, aby poinformować usługę Git, które pliki w projekcie nie mają być śledzone, i upewnić się, że usługa Git nie zgłosi zmian w tych plikach. W przypadku plików, które usługa Git nie śledzi, można użyć .gitignore pliku lub exclude . W przypadku plików śledzone przez usługę Git możesz poinformować usługę Git o zaprzestaniu ich śledzenia i ignorowaniu zmian.

W tym artykule omówiono sposób wykonywania następujących zadań:

  • Ignoruj zmiany w nieśledzonych plikach przy użyciu .gitignore pliku.
  • Ignoruj zmiany w nieśledzonych plikach przy użyciu exclude pliku.
  • Zatrzymaj śledzenie pliku i ignoruj git update-index zmiany przy użyciu polecenia .
  • Zatrzymaj śledzenie pliku i ignoruj git rm zmiany przy użyciu polecenia .

Używanie pliku gitignore

Możesz poinformować usługę Git, aby nie śledzić niektórych plików w projekcie, dodając i konfigurując plik gitignore . Wpisy w .gitignore pliku mają zastosowanie tylko do nieśledzonych plików. Nie uniemożliwiają one usłudze Git raportowania zmian śledzonych plików. Śledzone pliki to pliki, które zostały zatwierdzone i istnieją w ostatniej migawki usługi Git.

Każdy wiersz w .gitignore pliku określa wzorzec wyszukiwania plików względem ścieżki .gitignore pliku. Składnia .gitignore jest elastyczna i obsługuje używanie symboli wieloznacznych do określania pojedynczych lub wielu plików według nazwy, rozszerzenia i ścieżki. Usługa Git dopasuje .gitignore wzorce wyszukiwania do plików w projekcie, aby określić, które pliki mają być ignorowane.

Zazwyczaj dodajesz .gitignore plik do folderu głównego projektu. Można jednak dodać plik do dowolnego folderu projektu, aby poinformować usługę .gitignore Git, które pliki mają być ignorowane w tym folderze i jego podfolderach w dowolnej głębi zagnieżdżonej. W przypadku wielu .gitignore plików wzorce .gitignore wyszukiwania plików określone w folderze mają pierwszeństwo przed wzorcami określonymi .gitignore przez plik w folderze nadrzędnym.

Możesz ręcznie utworzyć .gitignore plik i dodać do niego wpisy wzorca pliku. Możesz też zaoszczędzić czas, .gitignore pobierając szablon dla środowiska deweloperskiego z repozytorium GitHub gitignore. Jedną z zalet korzystania z .gitignore pliku jest to, że można zatwierdzaćzmiany i udostępniać je innym osobom.

Uwaga

Program Visual Studio automatycznie tworzy .gitignore plik dla środowiska deweloperskiego programu Visual Studio podczas tworzenia repozytorium Git.

Program Visual Studio 2022 zapewnia środowisko kontroli wersji usługi Git za pomocą menu Git, zmian usługi Git i menu skrótów w Eksplorator rozwiązań. Program Visual Studio 2019 w wersji 16.8 oferuje również interfejs użytkownika narzędzia Team Explorer Git. Aby uzyskać więcej informacji, zobacz kartę Visual Studio 2019 — Team Explorer .

W oknie Zmiany usługi Git kliknij prawym przyciskiem myszy dowolny zmieniony plik, który ma zostać zignorowany przez usługę Git, a następnie wybierz polecenie Ignoruj ten element lokalny lub Ignoruj to rozszerzenie. Te opcje menu nie istnieją dla śledzonych plików.

Zrzut ekranu przedstawiający opcje menu kontekstowego dla zmienionych plików w oknie Zmiany usługi Git w programie Visual Studio.

Opcja Ignoruj ten element lokalny dodaje nowy wpis do .gitignore pliku i usuwa wybrany plik z listy zmienionych plików.

Opcja Ignoruj to rozszerzenie dodaje nowy wpis do .gitignore pliku i usuwa wszystkie pliki z tym samym rozszerzeniem co wybrany plik z listy zmienionych plików.

Każda z opcji tworzy plik, .gitignore jeśli jeszcze nie istnieje w folderze głównym repozytorium i dodaje do niego wpis.

Edytowanie pliku gitignore

Każdy wpis w .gitignore pliku to: wzorzec wyszukiwania plików określający, które pliki mają być ignorowane, komentarz rozpoczynający się od znaku numeru () lub pusty wiersz (#w celu zapewnienia czytelności). Składnia jest elastyczna .gitignore i obsługuje używanie symboli wieloznacznych do określania pojedynczych lub wielu plików według nazwy, rozszerzenia i ścieżki. Wszystkie ścieżki wzorców wyszukiwania plików są względem .gitignore pliku.

Oto kilka przykładów typowych wzorców wyszukiwania plików:

# Ignore all files with the specified name.
# Scope is all repo folders.
config.json

# Ignore all files with the specified extension.
# Scope is all repo folders.
*.json

# Add an exception to prevent ignoring a file with the specified name.
# Scope is all repo folders.
!package.json

# Ignore a file with the specified name.
# Scoped to the 'logs' subfolder.
/logs/test.logfile

# Ignore all files with the specified name.
# Scoped to the 'logs' subfolder and all folders beneath it.
/logs/**/test.logfile

# Ignore all files in the 'logs' subfolder.
/logs/

Gdy tylko zmodyfikujesz .gitignore plik, usługa Git aktualizuje listę plików, które ignoruje.

Uwaga

Użytkownicy systemu Windows muszą używać ukośnika (/) jako separatora ścieżki w .gitignore pliku, zamiast używać ukośnika odwrotnego (\). Wszyscy użytkownicy muszą dodać ukośnik końcowy podczas określania folderu.

Używanie globalnego pliku gitignore

Plik można wyznaczyć .gitignore jako globalny plik ignoruj, który ma zastosowanie do wszystkich lokalnych repozytoriów Git. W tym celu użyj polecenia w git config następujący sposób:

git config core.excludesfile <gitignore file path>

Plik globalny .gitignore pomaga upewnić się, że usługa Git nie zatwierdza niektórych typów plików, takich jak skompilowane pliki binarne, w żadnym lokalnym repozytorium. Wzorce wyszukiwania plików w pliku specyficznym dla .gitignore repozytorium mają pierwszeństwo przed wzorcami w pliku globalnym .gitignore .

Używanie pliku wykluczania

Można również dodawać wpisy wzorców wyszukiwania plików do exclude pliku w .git/info/ folderze lokalnego repozytorium. Plik exclude informuje usługę Git, które nieśledzone pliki mają być ignorowane. Używa tej samej składni dla wzorców wyszukiwania plików jako .gitignore pliku.

Wpisy w exclude pliku mają zastosowanie tylko do nieśledzonych plików. Nie uniemożliwiają usłudze Git raportowania zmian w zatwierdzonych plikach, które już śledzą. Na repozytorium istnieje tylko jeden exclude plik.

Ponieważ usługa Git nie zatwierdza ani nie wypycha exclude pliku, możesz bezpiecznie użyć go do ignorowania plików w systemie lokalnym bez wpływu na nikogo innego.

Ignoruj zmiany za pomocą usługi git update-index

Czasami wygodne jest tymczasowe zatrzymanie śledzenia lokalnego pliku repozytorium i zignorowanie zmian w pliku przez usługę Git. Możesz na przykład dostosować plik ustawień dla środowiska deweloperskiego bez ryzyka popełnienia zmian. W tym celu możesz uruchomić git update-index polecenie z flagą skip-worktree :

git update-index --skip-worktree <file path>

Aby wznowić śledzenie, uruchom git update-index polecenie z flagą --no-skip-worktree .

Możesz też tymczasowo zatrzymać śledzenie pliku i zignorować zmiany w pliku za pomocą git update-index polecenia z flagą assume-unchanged . Ta opcja jest mniej skuteczna niż flaga skip-worktree , ponieważ operacja git pull , która zmienia zawartość pliku, może przywrócić flagę assume-unchanged .

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

Aby wznowić śledzenie, uruchom git update-index polecenie z flagą --no-assume-unchanged .

Używanie narzędzia git rm do ignorowania zmian

Wpisy w .gitignore pliku lub exclude nie mają wpływu na pliki, które już śledzi usługa Git. Usługa Git śledzi pliki, które zostały wcześniej zatwierdzone. Aby trwale usunąć plik z migawki usługi Git, aby usługa Git nie śledziła go, ale bez usuwania go z systemu plików, uruchom następujące polecenia:

git rm --cached <file path>
git commit <some message>

Następnie użyj .gitignore wpisu lub exclude , aby uniemożliwić usłudze Git raportowanie zmian w pliku.

Następne kroki