Gita działa w ciekawy sposób do przenoszenia historia zmian plików. Chociaż może się wydawać, że szuka zmian w każdym z nich, tak naprawdę nosi plik o nazwie indeks, w którym wstawiane są zachodzące zmiany. W ten sposób po prostu czytając plik indeks możesz wiedzieć, które pliki i jakie treści w nich zostały zmienione.
Kiedy zrozumiemy tę koncepcję, jak Gita Pobiera zarejestrowane zmiany, wtedy możemy zacząć w pełni korzystać z narzędzia, ponieważ w tym momencie będziemy mogli zacząć używać różnych poleceń, aby pobrać zmiany z naszego repozytorium i obsłużyć je z logicznego perspektywiczny.
Klasyfikowanie plików w Git
Zanim przejdziemy do głębszych punktów, musimy zobaczyć, jak Gita klasyfikuje twoje pliki. Nie oznacza to klasyfikacji według typu pliku ze względu na jego rozszerzenie, ale raczej według jego statusu w stosunku do naszego repozytorium i jego indeks.
Zasadniczo mamy trzy rodzaje plików w GIT, każdy ma swój moment w repozytorium, zobaczmy, co to jest:
ŚledzoneTen typ pliku jest już dodany do naszego repozytorium i jest brany pod uwagę przez indeks a plik przyjmuje ten stan po dodaniu go za pomocą następującego polecenia.
git dodaj nazwę plikuIgnorowanyW tej klasyfikacji plik ignorowane nie jest brane pod uwagę przez Gita Przy wprowadzaniu zmian pliki, które przechodzą wiele zmian lub które nie są istotne dla stabilności projektu są zwykle klasyfikowane w ten sposób, na przykład pliki graficzne ze względu na ich wagę lub być może skrypty Baza danych że nie musimy ciągle modyfikować. Aby zignorować plik, jego nazwa musi być zawarta w pliku o nazwie .gitignore i dodaj go do naszego repozytorium.
NieśledzoneTen typ pliku nie należy jeszcze do naszego repozytorium, ponieważ jeszcze go nie dodaliśmy i jest nowy w systemie plików, zwykle dzieje się tak, gdy tworzymy nowy plik w już zainicjowanym repozytorium lub gdy inicjujemy repozytorium w folderze który ma istniejące pliki.
Praktyczny przykład klasyfikacji pilników
Zobaczmy teraz mały praktyczny przykład tego, jak możemy wykrywać typy plików w repozytorium Gita, w tym celu musimy wykonać następujące kroki:
1- Zamierzamy utworzyć nowy folder na naszym komputerze o nazwie pliki git.
2- Po utworzeniu folderu wejdziemy do niego z naszej konsoli i tam wykonamy polecenie git init a potem robimy status git Aby zobaczyć stan naszego repozytorium, zobaczmy jak wygląda aplikacja poprzednich poleceń:
3- Kiedy zakończymy poprzedni krok, będziemy mieli repozytorium Zainicjowano Git i gotowe do pracy, możemy utworzyć nowy plik w tym folderze i zrobimy to ponownie status git aby zobaczyć zmianę musimy mieć nasz nowy plik pod klasyfikacją nieśledzone.
4- Powtórzymy poprzedni krok i utworzymy nowy plik, jeśli zobaczymy wynik ponownego zrobienia tego status git policzymy oba pliki, zobaczmy:
5- Teraz utworzymy nowy plik o nazwie .gitignore, zwróć uwagę na punkt przed plikiem i wewnątrz będziemy umieszczać nazwę jednego z naszych poprzednich plików, robimy to ponownie status git i zobaczymy, że teraz dostajemy tylko plik, którego w nim nie ma .gitignore i plik .gitignore właśnie stworzyliśmy:
6- Wtedy zrobimy git dodaj. aby dodać wszystkie nasze pliki i na koniec wykonamy a git commit -m "początkowe zatwierdzenie" z tym dodawaniem naszych plików do repozytorium, jeśli dokonamy zmiany w pliku, której nie umieszczamy wewnątrz .gitignore i zachowamy to, jeśli znów pobiegniemy status git zobaczymy plik w statusie lub klasyfikacji śledzone.
Polecenie git add
W poprzednim przykładzie mogliśmy zobaczyć użycie git dodaj i może możemy pomyśleć, że jest to jeszcze jedno polecenie naszego narzędzia, ale to jest bardzo ważne, to jest to, które nam pozwala dodaj plik do naszego repozytorium jeśli jeszcze w nim nie istnieje, a także pozwala nam dodać zmiany, które zaszły w istniejącym pliku w naszym repozytorium.
Jak używać?Ma kilka sposobów wykorzystania, najczęściej jest to zrobić git dodaj nazwę pliku, gdzie mówimy mu, jaki plik dodać lub jeśli nie możemy tego zrobić git dodaj. gdzie kropka reprezentuje wszystkie pliki, które zostały zmodyfikowane lub których nie ma w repozytorium.
Bardzo ważne jest, aby po dokonaniu jakichkolwiek zmian w repozytorium dodać pliki za pomocą git dodaj, ponieważ w przeciwnym razie nie będziemy mogli zapisać naszych zmian, oprócz tworzenia różnych wersji pliku, co może prowadzić do ewentualnego konfliktu w przyszłości.
Korzystanie z git add
Wewnątrz naszego folderu pliki git które stworzyliśmy w poprzednim przykładzie samouczka, dodamy nowy plik, który umieścimy nowyPlik3 a następnie w istniejącym pliku, którego w nim nie ma .gitignore zróbmy zmianę.
To, co chcemy dzięki temu osiągnąć, to przetestować, jak używać naszego polecenia git dodaj, zobaczmy, jak to wygląda w naszej konsoli poleceń:
Postępując zgodnie z poprzednimi instrukcjami, powinniśmy mieć na ekranie coś takiego jak powyżej, gdzie pokazano nam zmodyfikowany plik i zupełnie nowy plik w repozytorium.
Teraz zamierzamy dodać nowy plik do repozytorium, ale nie zrobimy tego z istniejącym lub zmodyfikowanym wcześniej plikiem. W tym celu po prostu musimy zrobić git dodaj naszą nazwę pliku. Wtedy zrobimy status git. Zobaczmy:
Jak widać, nasze repozytorium uwzględnia już plik, którym dodaliśmy git dodaj, w ten sposób możemy zasadniczo pracować nad zmianami w naszych plikach.
Usuń pliki z repozytorium
Następną czynnością, którą musimy umieć wykonać, jest usunięcie plików z naszego repozytorium, ponieważ bardzo często tworzymy coś przez pomyłkę lub po prostu porządkujemy w nim.
Należy wziąć pod uwagę dwie rzeczy, możemy usunąć plik z indeksu naszego repozytorium, ale zachowaj ten plik w systemie naszego folderu, więc jeśli zrobimy a status git Zobaczymy go ponownie. Lub jeśli nie możemy usunąć pliku zarówno z naszego folderu, jak iz indeks z naszego repozytorium, do tego możemy użyć polecenia git rm.
Polecenie git rm - -cached
Używając polecenia rm z dodaną opcją w pamięci podręcznej, to co robimy, to usuwamy dany plik z indeksZachowamy go jednak na naszym komputerze, to polecenie jest często używane, gdy nie chcemy jeszcze dodawać tego pliku do naszego repozytorium, ale musimy zapisać inne zmiany.
Aby z niego skorzystać, po prostu wykonujemy polecenie, gdy już dodaliśmy z git dodaj jakiś plik, zobaczmy jak to wygląda w naszej konsoli poleceń:
Zauważamy, że plik nowyPlik3 którego dodaliśmy do naszego repozytorium teraz nie ma i ma klasyfikację nieśledzone.
Polecenie Git rm
Zobaczmy teraz, jak używać polecenia git rm, to polecenie jest znacznie potężniejsze, ponieważ bezpośrednio usuwa plik z indeks i plik, dlatego musimy być ostrożni decydując się na użycie go w naszym repozytorium, jest bardzo prawdopodobne, że raz zastosowanego nie będziemy w stanie odzyskać zmiany.
Zobaczmy w poniższym przykładzie, jak to działa, gdy zastosujemy go do pliku, w tym przypadku zamierzamy dodać nowyPlik3 z git dodaj a potem będziemy się na to aplikować git rm:
Widzimy to, gdy robimy to bezpośrednio git pokazuje nam błąd i prosi nas o wykonanie wymuszonego usunięcia podczas dodawania parametru -F do instrukcji wynika to z wagi zmiany, w końcu dokonamy status git i zauważymy, że wspomniany plik zniknął w całości z naszego repozytorium.
Więcej z .gitignore
Widzieliśmy, że możemy dodać konkretny plik do naszego pliku .gitignoreJednak gdy pracujemy w środowisku, w którym obsługujemy setki, a może tysiące plików, jest to mało praktyczne, dlatego możemy używać wzorców.
Wzór pozwoli nam wskazać, aby Gita że plik spełniający ciąg znaków lub wyrażenie powinien zostać zignorowany, dzięki temu możemy wskazać konkretne rozszerzenia, albo w całym projekcie, albo w specjalnym folderze. Spójrzmy na przykład tego.
* .jpg.webp zignoruje wszystkie pliki .jpg.webp naszego projektu, ale jeśli chcemy zachować ślad jednego w szczególności, wystarczy dodać:
! nazwapliku.jpg.webpTo takie proste, mamy silną i złożoną strukturę, która pozwala nam utrzymać porządek w naszym repozytorium.
Na tym kończymy ten samouczek, w obszerny sposób widzieliśmy, w jaki sposób Gita przenosi lub zarządza zmianami w naszych plikach, ważne jest opanowanie tej sprawy, ponieważ dzięki temu będziemy mogli wydajniej pracować w środowiskach zespołowych, w których jest ona obsługiwana Gita jako kontroler wersji.