
Czym jest Git?
Git to rozproszony, otwartoźródłowy system kontroli wersji. Umożliwia programistom i data scientistom śledzenie kodu, scalanie zmian i przywracanie starszych wersji - AWS. Pozwala synchronizować zmiany ze zdalnym serwerem. Dzięki elastyczności i popularności Git stał się standardem branżowym, ponieważ obsługuje niemal wszystkie środowiska deweloperskie, narzędzia wiersza poleceń i systemy operacyjne.
Jak działa Git?
Git przechowuje twoje pliki i ich historię rozwoju w lokalnym repozytorium. Za każdym razem, gdy zapisujesz wprowadzone zmiany, Git tworzy commit. Commit to migawka aktualnych plików. Commity są ze sobą połączone, tworząc wykres historii rozwoju, jak poniżej. Pozwala to wrócić do poprzedniego commita, porównywać zmiany i śledzić postęp projektu - Azure DevOps. Commity są identyfikowane unikalnym hashem, który służy do porównywania i cofania wprowadzonych zmian.

Wykres historii rozwoju
Gałęzie (branches)
Gałęzie to kopie kodu źródłowego działające równolegle do głównej wersji. Aby zapisać wprowadzone zmiany, scal branch z wersją główną. Ta funkcja wspiera pracę zespołową bez konfliktów. Każdy programista ma swoje zadanie i dzięki gałęziom może pracować nad nową funkcją bez ingerencji pozostałych. Po zakończeniu pracy możesz scalić nowe funkcje z wersją główną (master). Jeśli chcesz nauczyć się klonować gałąź, sprawdź ten samouczek: Git Clone Branch.

Dodawanie nowej funkcji do repozytorium
Commity
W Gicie pliki mogą być w trzech stanach: zmodyfikowane, zindeksowane (staged) i zatwierdzone (committed). Gdy wprowadzasz zmiany w pliku, są one zapisywane w lokalnym katalogu. Nie są jeszcze częścią historii rozwoju Git. Aby utworzyć commit, musisz najpierw dodać zmienione pliki do indeksu. Możesz dodawać lub usuwać zmiany w obszarze staging, a następnie spakować je w commit z wiadomością opisującą zmiany.

Trzy stany plików w Gicie
Jakie korzyści daje Git?
- Śledzenie zmian: pozwala programistom przeglądać historyczne zmiany. Historia rozwoju ułatwia identyfikację i naprawę błędów.
- Integracja z IDE: dzięki popularności, integracja z Gitem jest dostępna we wszystkich środowiskach deweloperskich, np. VSCode i JupyterLab.
- Współpraca zespołowa: zespół programistów może śledzić postępy, a dzięki gałęziom pracować samodzielnie nad zadaniami i scalać zmiany z wersją główną. Pull requesty, rozwiązywanie konfliktów scalania i code review wspierają współpracę.
- Rozproszony VCS: w systemie rozproszonym nie ma centralnego przechowywania plików. Dla tego samego projektu istnieje wiele kopii zapasowych. Takie podejście pozwala pracować offline i zatwierdzać zmiany.
Git w projektach data science
Git zapewnia kontrolę wersji dla skryptów, metryk, danych i modeli. Dzięki rozszerzeniu git-lfs możesz przechowywać i wersjonować duże zbiory danych oraz modele uczenia maszynowego. W typowym projekcie data science masz notebook Jupyter, zbiór danych, model, metadane i metryki modelu. Metadane obejmują pliki zawierające informacje o modelu ML, cechach, parametrach modelu i pliki automatyzacji. Wszystko to jest niezbędne do monitorowania postępów aplikacji AI i rozwiązywania problemów.
Śledzenie eksperymentów data science pomaga naukowcom cofać przypadkowe zmiany, wybierać najlepszy eksperyment na podstawie metryki wydajności i współpracować z innymi członkami zespołu. Poniższy diagram pokazuje, jak zmiany w danych lub kodzie wpływają na metadane i wynik modelu. Śledzenie tych zmian może też pomóc innym w znalezieniu lepszego rozwiązania. Dowiedz się wszystkiego o Gicie w najnowszym wpisie Summer Worsley.

Git w projekcie data science
Współpraca z GitHubem
GitHub to chmurowa platforma do tworzenia oprogramowania. Powszechnie używana do zapisywania plików, śledzenia zmian i współpracy przy projektach deweloperskich. W ostatnich latach GitHub stał się najpopularniejszą platformą społecznościową dla społeczności programistów. Osoby indywidualne mogą wnosić wkład do projektów open source i zgłaszać błędy, dyskutować o nowych projektach i odkrywać nowe narzędzia.
Data scientistci i inżynierowie ML podążają śladem programistów i integrują przepływ pracy z GitHubem. Dzięki temu mogą dzielić się wynikami badań, umożliwiać współpracę społeczności i współdziałać z zespołami danych. Na tej platformie znajdziesz wszelkiego rodzaju projekty data science i ML, przewodniki, samouczki i zasoby. Dla studentów to okazja do zdobycia doświadczenia i w konsekwencji pracy w prestiżowej firmie.
Portfolio
Większość rekruterów technicznych poprosi o projekty portfolio lub profil GitHub. Pomaga im to ocenić, czy kandydat pasuje do firmy. Zdecydowanie warto założyć profil na GitHubie i regularnie go aktualizować. Menedżerowie ds. rekrutacji szukają kandydatów z dużym doświadczeniem w tworzeniu oprogramowania i wkładem w projekty open source. Analiza portfolio na GitHubie pomaga im też przygotować pytania do rozmów technicznych.

Profil GitHub
GitHub pozwala data scientistom prezentować projekty, a to może być liczone jako doświadczenie zawodowe w twoim CV. Pokazywanie projektów z portfolio tworzy też okazje do współpracy, startu własnej firmy i pracy badawczej.

Projekty portfolio
Funkcje
GitHub oferuje też różne inne funkcje, równie ważne jak prezentowanie portfolio. Warto poznać każdą z nich, aby móc włączyć je do swoich projektów data science.
- Open source: GitHub zapewnia pełny ekosystem dla projektów open source. Możesz sponsorować maintainerów, wnosić wkład w projekt, używać narzędzi open source w istniejącym projekcie i promować swoją pracę.
- Współpraca społecznościowa: GitHub stał się platformą społecznościową, gdzie można dyskutować o issue, prośbach o funkcje, wkładach w kod i dokumentację.
- Explore: karta GitHub Explore pomaga odkrywać nowe projekty, popularne narzędzia i wydarzenia dla deweloperów.
- GitHub Gists: możesz udostępniać fragmenty kodu lub osadzać je na blogu czy stronie www.
- GitHub CLI: pozwala wykonywać merge requesty, robić code review, sprawdzać issue i monitorować postęp z poziomu wiersza poleceń.
- Darmowa przestrzeń: nielimitowana przestrzeń dla prywatnych i publicznych repozytoriów.
- Hosting WWW: możesz opublikować swoją stronę portfolio lub dokumentację. GitHub Pages zapewnia łatwe budowanie i wdrażanie stron.
- Codespace: chmurowe środowisko deweloperskie zintegrowane z twoim repozytorium GitHub.
- Project: konfigurowalne, elastyczne narzędzie do planowania i śledzenia pracy na GitHubie.
- Automatyzacja: GitHub Actions automatyzują przepływ pracy, taki jak build, testy, publikacja, release i wdrożenie.
- Sponsor: możesz wspierać ulubione projekty open source lub deweloperów, płacąc miesięczną lub jednorazową kwotę. Pozwala też używać zewnętrznych platform płatniczych, np. ko-fi.
Podstawowe polecenia
Zanim przejdziemy do zarządzania projektami data science, poznaj najczęściej używane polecenia Gita, których będziesz używać w każdym projekcie. Podstawy obejmują inicjalizację repozytorium, zapisywanie zmian, sprawdzanie logów, wypychanie zmian na zdalny serwer i scalanie.
-
git inittworzy repozytorium Git w lokalnym katalogu. -
git clone <remote-repo-address>: kopiuje całe repozytorium ze zdalnego serwera do lokalnego katalogu. Możesz też użyć do kopiowania repozytoriów lokalnych. -
git add <file.txt>: dodaje pojedynczy plik lub wiele plików i folderów do obszaru staging. -
git commit –m “Message”: tworzy migawkę zmian i zapisuje ją w repozytorium. -
git configsłuży do ustawień specyficznych dla użytkownika, jak e‑mail, nazwa użytkownika i format plików. -
git statuspokazuje listę zmienionych plików lub plików, które nie zostały jeszcze zindeksowane i zatwierdzone. -
git push <remote-name> <branch-name>: wysyła lokalne commity do zdalnego brancha w repozytorium. -
git checkout -b <branch-name>: tworzy nowy branch i przełącza na niego. -
git remote –v: wyświetla wszystkie zdalne repozytoria. -
git remote add <remote-name> <host-or-remoteURL>: dodaje zdalny serwer do lokalnego repozytorium. -
git branch –d <branch-name>: usuwa branch. -
git pull mergescala commity ze zdalnego repozytorium do lokalnego katalogu. -
git merge <branch-name>: po rozwiązaniu konfliktów scalania łączy wybrany branch z bieżącym. -
git logpokazuje szczegółową listę commitów dla bieżącego brancha.

Kompletny rozwój z GitHubem
Jeśli chcesz poznać więcej poleceń, sprawdź naszą ściągę do Gita.
Pierwsze kroki
W tej sekcji użyjemy Gita do śledzenia projektu data science i GitHuba jako zdalnego serwera. Nauczysz się instalować Gita, tworzyć i klonować repozytorium z GitHuba, uruchamiać eksperymenty ML i wypychać zmiany (notebook, model, dane) na GitHuba przy użyciu Windows PowerShell 7.
Instalacja Gita
Git obsługuje wszystkie systemy operacyjne. Możesz go zainstalować za pomocą narzędzi wiersza poleceń lub pobrać i uruchomić instalator.
Linux
Dla systemów opartych na Debian/Ubuntu użyj `apt-get install git`, a jeśli korzystasz z innej dystrybucji Linuksa, pełną listę komend instalacyjnych znajdziesz tutaj.
macOS
Jeśli masz zainstalowany homebrew, użyj polecenia `brew install git`, aby pobrać i zainstalować Gita. Możesz też pobrać binarny instalator i uruchomić setup.
Windows
Instalacja Gita na Windowsie jest prosta. Przejdź na stronę pobierania, kliknij odpowiednią wersję Windows, a następnie pobierz i zainstaluj. Jeśli masz narzędzie winget, możesz zainstalować Gita, wpisując w PowerShell: winget install --id Git.Git -e --source winget.
Po instalacji Gita upewnij się, że skonfigurowałeś nazwę użytkownika i e‑mail. Te informacje są używane do podpisywania commitów.
git config --global user.name "your-user-name"
git config --global user.email "[email protected]"
Aby uzyskać bardziej szczegółowe informacje o instalacji Gita, kliknij tutaj.
Inicjalizacja projektu
Jeśli masz konto na GitHubie, kliknij przycisk + i wybierz nowe repozytorium. Następnie wpisz nazwę repozytorium i dodaj krótki opis. Zostanie utworzone puste publiczne repozytorium.

Tworzenie projektu
Istnieje wiele sposobów klonowania zdalnych repozytoriów do lokalnego katalogu, a GitHub udostępnia szczegółowy przewodnik, jak klonować, dodawać zdalne i inicjalizować projekt Git.

GitHub Clone
Możemy po prostu sklonować repozytorium, podając link HTTPS. Upewnij się, że jesteś w katalogu roboczym, używając wiersza poleceń lub PowerShell.
git clone https://github.com/kingabzpro/DataCamp-Git.git
>>> Cloning into 'DataCamp-Git'...
>>> warning: You appear to have cloned an empty repository.
cd .\DataCamp-Git\
ALBO
Utwórz nowy katalog o nazwie „DataCamp-Git” i zainicjalizuj Gita prostym poleceniem. Następnie dodaj połączenie ze zdalnym repozytorium, aby móc synchronizować pracę z GitHubem.
mkdir DataCamp-Git
cd .\DataCamp-Git
git init
>>> Initialized empty Git repository in C:/Repository/GitHub/DataCamp-Git/.git/
git remote add origin https://github.com/kingabzpro/DataCamp-Git.git
ALBO
Jeśli masz już projekt w katalogu, po prostu zainicjalizuj Gita poleceniem `git init` i dodaj zdalny GitHub, jak wyżej.
Prosty commit
Zanim dodamy pliki do repozytorium, upewnij się, że jesteś w poprawnym lokalnym katalogu.
Zaczniemy prosto: utworzymy plik README z nagłówkiem DataCamp-Git. Następnie dodamy go do obszaru staging poleceniem `git add`.
echo "# DataCamp-Git" >> README.md
git add README.md
git status pokazuje, że jesteśmy na gałęzi main, a plik `README.md` jest zindeksowany i gotowy do zatwierdzenia.
git status
>>> On branch main
>>> No commits yet
>>> Changes to be committed:
(use "git rm --cached <file>..." to unstage)
new file: README.md
Aby utworzyć pierwszy commit, użyjemy `git commit` z wiadomością. Jak widać, pierwszy commit został dodany pod hashem ed9c886.
git commit -m "first commit"
>>> [main (root-commit) ed9c886] first commit
>>> 1 file changed, 1 insertion(+)
>>> create mode 100644 README.md
Dodawanie plików projektu
Użyjemy przestrzeni roboczej DataCamp MasterCard Stock Price with LSTM and GRU i pobierzemy pliki. Autor projektu przetworzył dane i wytrenował modele szeregów czasowych LSTM i GRU. Dowiedz się więcej, czytając Recurrent Neural Network Tutorial (RNN).
Aby zapisać plik modelu, dodaliśmy nową komórkę kodu w notebooku Jupyter projektu. Skrypt utworzy nowy katalog „model” i zapisze oba modele LSTM i GRU.
!mkdir -p model
model_lstm.save('model/LSTM')
model_gru.save('model/GRU')
Jak widać, repozytorium Git zawiera folder data z plikami CSV, folder model z wagami i metadanymi modelu.

Teraz zindeksujemy wszystkie pliki. Po poleceniu początkowym możesz dodać dowolny katalog, plik lub dane.
git add .\data .\model LSTM_GRU.ipynb RNN.png
ALBO
Jeśli chcesz dodać do obszaru staging wszystkie pliki, użyj kropki.
git add .
Commit i push
Zatwierdzimy wszystkie zmiany prostą wiadomością, a wynik pokaże wszystkie nowe pliki w trybie create.
git commit -m "project files added"
>>> [main aa3e19a] project files added
>>> 10 files changed, 5020 insertions(+)
>>> create mode 100644 LSTM_GRU.ipynb
>>> create mode 100644 RNN.png
>>> create mode 100644 data/Mastercard_stock_history.csv
>>> create mode 100644 data/Mastercard_stock_info.csv
>>> create mode 100644 model/GRU/saved_model.pb
>>> create mode 100644 model/GRU/variables/variables.data-00000-of-00001
>>> create mode 100644 model/GRU/variables/variables.index
>>> create mode 100644 model/LSTM/saved_model.pb
>>> create mode 100644 model/LSTM/variables/variables.data-00000-of-00001
create mode 100644 model/LSTM/variables/variables.index
Synchronizacja ze zdalnym repozytorium GitHub wymaga nazwy zdalnego i nazwy gałęzi `git push <remote-name> <branch-name>`. Jeśli masz tylko jedno zdalne i jeden branch, samo `git push` wystarczy.
Po `git push` okno pop‑up poprosi o dane logowania — podaj nazwę użytkownika GitHub i hasło. Możesz też wygenerować Personal access tokens i użyć ich zamiast hasła. Więcej w Git Push and Pull Tutorial.
git push
>>> Enumerating objects: 21, done.
>>> Counting objects: 100% (21/21), done.
>>> Delta compression using up to 4 threads
>>> Compressing objects: 100% (19/19), done.
>>> Writing objects: 100% (21/21), 1.83 MiB | 1.59 MiB/s, done.
>>> Total 21 (delta 2), reused 0 (delta 0), pack-reused 0
>>> remote: Resolving deltas: 100% (2/2), done.
>>> To https://github.com/kingabzpro/DataCamp-Git.git
>>> * [new branch] main -> main
Sprawdzimy nasze repozytorium GitHub kingabzpro/DataCamp-Git, aby upewnić się, że udało się wypchnąć zmiany. Repozytorium ma wszystkie pliki, dane i modele.

Zdalny push na GitHuba
Gałęzie w Gicie
Zaleca się pracę na gałęziach: np. jeśli chcesz pracować nad dokumentacją projektu, utwórz branch documentation za pomocą git checkout lub git branch. Wprowadź zmiany w README i gdy je sfinalizujesz, scal branch z bazą.
W naszym przypadku utworzyliśmy i przełączyliśmy się na nowy branch o nazwie readme.
git checkout -b readme
Edytujmy plik README, dodając opis projektu oraz link do przestrzeni roboczej RNN DataCamp i poradnika. Następnie zindeksujemy zmiany i zapiszemy migawkę z wiadomością.
git add README.md
git commit -m "project description and links to blog"
>>> [readme f3b8b9b] project description and links to blog
>>> 1 file changed, 8 insertions(+)
Zdalne repozytorium nie ma brancha readme. Aby utworzyć nowy branch i wypchnąć zmiany, użyjemy „readme:readme”. Wynik polecenia pokazuje, że utworzono nowe gałęzie i zsynchronizowano lokalny i zdalny `readme`.
git push origin readme:readme
>>> remote: Resolving deltas: 100% (1/1), completed with 1 local object.
>>> remote: Create a pull request for 'readme' on GitHub by visiting:
>>> remote: https://github.com/kingabzpro/DataCamp-Git/pull/new/readme
>>> remote:
To https://github.com/kingabzpro/DataCamp-Git.git
>>> * [new branch] readme -> readme
Widzisz, że pomyślnie wypchnęliśmy lokalny branch na GitHuba z zmodyfikowaną wersją pliku README.md.

Branch readme na GitHubie
Pull request
Ta funkcjonalność jest powszechna w organizacjach. Na przykład programista pracował nad nową funkcją i chce scalić zmiany z głównym zdalnym branchem. Teraz utworzymy pull request za pomocą interfejsu GitHuba, klikając przycisk pull request. Następnie wybierz branch readme, który chcemy scalić z bazą (main). Możesz wpisać szczegółowy opis dodanych funkcji i kliknąć przycisk pull request.

Pull request z readme do main
Maintainer repozytorium porówna twoje zmiany i scali je, gdy przejdą wszystkie testy. W naszym przypadku to ty jesteś maintainerem, więc kliknij merge request, aby połączyć zmiany z gałęzią main.

Scalenie pull requesta na GitHubie
Gratulacje — pomyślnie utworzyliśmy pull request i scaliliśmy go z główną gałęzią. Zmiany na gałęzi main możesz zobaczyć tutaj.
Jeśli chcesz zobaczyć wszystkie zmiany w repozytorium git, wpisz `git log`, a zobaczysz historię zmian w projekcie. Logowanie zmian w projektach data science jest ważne, a Git pomaga śledzić wszystkie zmiany, nawet duże zbiory danych.

Historia logów Gita
Na zakończenie
GitOps są kluczowe w rozwoju aplikacji danych. Stały się niezbędną umiejętnością w każdym obszarze IT; nawet badacze akademiccy używają ich, by dzielić się kodem eksperymentów z szerszą publicznością. Z kolei GitHub odgrywa dużą rolę w promowaniu projektów open source, oferując wszystkim darmowy ekosystem tworzenia oprogramowania.
W tym samouczku poznaliśmy Gita i GitHuba oraz to, dlaczego są ważne w projektach data science. Samouczek wprowadza też podstawowe polecenia Gita i daje praktyczne doświadczenie w śledzeniu zmian w danych, modelu i kodzie. Jeśli chcesz dowiedzieć się więcej o Gicie, zapisz się na kurs Introduction to Git na DataCamp. Możesz też dowiedzieć się o znaczeniu certyfikacji GitHub Foundations i o tym, jak może pomóc twojej karierze.
FAQ dotyczące Git
Czym jest Git?
Otwartoźródłowy rozproszony system kontroli wersji. Pozwala programistom przechowywać, wersjonować i wizualizować zmiany w projekcie deweloperskim. Wspiera elastyczną pracę zespołową i usprawniony przepływ pracy.
Co oznacza skrót Git?
To nie jest akronim. Według jego twórcy, Linusa Torvaldsa, “Git może znaczyć cokolwiek, zależnie od nastroju.” To kombinacja trzech losowych liter, których nie używa żadna komenda UNIX.
Jak sklonować repozytorium Git?
Wystarczy w terminalu wpisać `git clone <adres zdalnego repozytorium>`. Możesz klonować repozytoria lokalne i zdalne. Obsługiwane są protokoły SSH i HTTPS.
Jak usunąć gałąź (branch) w Gicie?
Aby usunąć lokalny branch, użyj `git branch -d <nazwa_lokalnego_brancza>`, a aby usunąć zdalny branch, użyj `git push <nazwa_zdalnego> -d <nazwa_zdalnego_brancza>`.
Jak przełączać gałęzie w Gicie?
Przełącz się na istniejący branch poleceniem `git checkout <nazwa brancza>` lub utwórz i przełącz się na nowy branch poleceniem `git checkout -b <nazwa brancza>`.
Jak zainstalować Gita?
W systemach Linux użyj `apt-get install git`, a dla innych systemów operacyjnych zajrzyj na git-scm.com.
Czy Git jest darmowy?
Tak, jest darmowy i open-source na licencji GPL-2.0.
Czym jest Git Bash?
To aplikacja dla systemu Microsoft Windows, która zapewnia narzędzia powłoki w stylu Uniksa i podobne środowisko.
Jak utworzyć nową gałąź w Gicie?
Użyj polecenia `git branch <nowy-branch> <branch-bazowy>` w terminalu. Aby utworzyć i od razu się przełączyć na nowy branch, użyj `git checkout -b <nazwa brancza>`.
Co robi polecenie git pull?
Aktualizuje lokalną wersję repozytorium ze zdalnego serwera, kopiuje wszystkie zmiany ze zdalnego repozytorium i scala je z lokalnym katalogiem. Ten proces często wymaga rozwiązania konfliktów scalania.
Jak forknąć repozytorium w Gicie?
Forkowanie na GitHubie to proces tworzenia kopii repozytorium na koncie użytkownika GitHub z innego konta. Zwykle robi się to, by wspierać wkład społeczności lub pracę zespołową.
Jak zmienić nazwę gałęzi w Gicie?
Dla repozytorium lokalnego to proste: użyj `git branch -m <stara-nazwa> <nowa-nazwa>`. Aby zmienić nazwę zdalnego brancza, najpierw usuń stary branch poleceniem `git push origin --delete <stara-nazwa>`, a następnie wypchnij nowy `git push -u origin <nowa_nazwa>`.
Jak usunąć repozytorium Git?
Możesz usunąć lokalny folder albo skasować folder .git poleceniem `rm -fr .git`. Na GitHubie przejdź do ustawień repozytorium, a na końcu strony znajdziesz opcję usuwania.
Jak zainstalować Gita na Windowsie?
Pobierz instalator dla Windows ze strony i uruchom go — zainstaluje Git Bash, Git CDM i Git GUI.
Jak wycofać commit w Gicie?
Użyj `git revert <commit sha>`, co wymaga unikalnego skrótu dowolnego wcześniejszego commita. Możesz też użyć `git revert HEAD~2`, co oznacza dwa commity wstecz od HEAD.