Skip to content

Tutorial do korzystania z gita zrobiony na potrzeby data science pg

Notifications You must be signed in to change notification settings

Toumash/git-workshop

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 

Repository files navigation

Git Tutorial

Narzędzia

  • VS Code

Teoria (15m)

Po co jest git? Co zamiast gita?

System kontroli wersji - oprogramowanie służące do śledzenia zmian głównie w kodzie źródłowym oraz pomocy programistom w łączeniu zmian dokonanych w plikach przez wiele osób w różnym czasie.

Dwie osoby pracujące na jednym pliku zmierzają do jednego dużego efektu końcowego -mastera- projektu jako całości. Każda gałąź to jedna osoba.

prosty schemat

Git - rozproszony system kontroli wersji zapoczątkowany przez Linusa Trovalda (twórcę Linuxa) (DVCS - distributed version control system)

Jak działa git?

image

ze strony https://git-scm.com/book/en/v1/Getting-Started-Git-Basics

Dystrybuowany? Że co?

Praca offline! Wszyscy posiadają własną kopię repozytorium, do której może zapisywać zmiany bez połączenia z siecią, następnie zmiany mogą być wymieniane między lokalnymi repozytoriami.

Co to jest GitHub?

Strona internetowa i serwis służący do przechowywania projektów i dzielenia się kodem z innymi użytkownikami.

Instalacja gita

Pobieramy gita Next, next, next

Konfiguracja gita

git config --global user.name "toumash" # login z githuba
git config --global user.email "mr.toumash@gmail.com" # adres email z githuba

Pierwszy commit

3 stany w których jest każdy plik:

  1. Working directory
  2. Staging area
  3. Git directory

Workflow

mkdir projekt # tworzymy katalog
cd projekt # przelaczamy sie do niego
git init # tworzymy repo
ls -alh # wszystkie pliki, dodatkowy ukryty folder .git
touch README.md # stworzenie pliku REAMDE.md
code README.md # edytujemy edycje pliku w swoim ulubionym programie w tym wypadku VS Code
git add README.md # dodanie pliku na stage
git add . # dodanie wszystkic plikow na stage
git status # status plikow
git commit -m "wiadomosc" # commit, zapis na dysk
git log --oneline --graph # historia commitow na dysku

Branche

git status # pokazuje aktualny branch
git branch feature/ficzerx # stworzenie brancha
git checkout feature/ficzerx # zmiana brancha
git checkout -b feature/ficzerx # stworzenie i zmiana brancha
git touch innyplik.txt # dodaje kolejny plik na nowym branchu
git add .
git commit -m "dodaje kolejny plik potrzebny do tego ficzera"
git log --oneline --graph # pokazuje nam ladne drzewko zmian na kazdym branchu

Merge

git status
git checkout feature/ficzerx # wchodzimy na brancha jesli jeszcze nie bylismy
git checkout master
git merge feature/ficzerx
git log --oneline --graph # drzewko powinno wskazywac oba branche w tym samym miejscu

Tutaj moze byc juz potrzebny ladniejszy log

git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"

potem tylko

git lg

Zamiast tego brzydki gitlog bez kolorow i grafu będzie to ladny gitlog z kolorami i wiecej info

GitHub

  • Do czego służy?
  • W jaki sposób wrzucić kod z dysku?
  • Dzielimy się na pary Tomasz i Alicja
  1. Tworzymy repo na githubie
    image
    image

    image

  2. Uruchamiamy proponowany przez githuba kod (przełączamy linka z SSH na HTTPS)

git remote add origin <link z githuba> # dodajemy githuba jako server
git push origin master # wgrywamy historie na githuba

Fork Data-Science-PG

Teraz zajmiemy się wspólną pracą nad projektem. Do tego celu musimy się podzielić na pary.
Następnie wybieramy jedną z dwóch postaci:

  • Tom
  • Alice

Intrukcja dla Toma

Dodaj Alice jako kontrybutora. Jak dodać kontrybutora? Ilustracja poniżej

Repozytorium, które chcemy współdzielić -> Settings -> Collaborators -> wpisanie loginu osoby, którą chcemy dodać -> Add Collaborator -> Druga osoba musi poprzez e-maila potwierdzić kolaborację

image

image

prez1

  1. Zforkuj repozytorium klikając Fork w prawym górnym rogu panelu repozytorium
  2. Zclonuj repozytorium na swój komputer
git clone <link z githuba>
  1. Stwórz i przełącz się na nowy branch feature/wiecej-opcji
git branch feature/wiecej-opcji
git checkout feature/wiecej-opcji
  1. Zacznij implementacje feature/wiecej-opcji zgodnie z kodem poniżej

Zmienia zakres liczb na (1,9) i dodaje kolejny elif "My answers are real"

image

  1. Zacommituj zmiany na brancha
git add .
git commit -m "zmienia sposob wyswietlania wiadomosci"
git push origin feature/wiecej-opcji
  1. Zobacz jak to wyglada w historii za pomocą aliasu, który stworzyliśmy wcześniej.
git lg
  1. Wejdz na mastera jako pierwszy (przed Alicją) i zmerguj zmiany
git checkout master
git merge feature/wiecej-opcji
git push origin master
  1. Pomóż w razie potrzeby swojemu partnerowi/partnerce

  2. Po ukończeniu wszystkiego git lg powinien na obu kontach wygladac podobnie do tego

image

Kolaboracja w dwie osoby - konflikt i rozwiazanie (VS Code albo coś innego)

Tom zmienia zakres liczb na (1,9) i dodaje kolejny elif "My answers are real" Alice zmienia zakres liczb na (1,9) i dodaje kolejny elif "My answers are not of any importance"

Instrukcja dla Alice

Znajdź konto Toma na githubie i zrób clone jego sforkowanego repozytorium git-workshop. W tym celu w wybranym repozytorium wybierz opcję "Clone or Download"

prezi5

Następnie w konsoli wejdź do wybranego folderu, gdzie chcesz umieścić to repozytorium i wpisz komendę git clone razem ze skopiowanym linkiem

prezi4

Teraz będziemy robić konflikt.

Utwórz nowy branch, na którym będziesz pracować.

git branch feature/nowa-opcja
git checkout feature/nowa-opcja

Otwórz plik magic-ifs.py dowolnym edytorze. Dodaj zakres liczb na (1,9) i dodaje kolejny elif "My answers are not of any importance"

prezi7

Kod ma wyglądać jak wyżej.

Następnie wracamy do konsoli i wpisujemy:

prezi8

A następnie

git push origin feature/nowa-opcja

Jeżeli druga osoba zrobiła commit brancha i merge to powinien powstać konflikt jak poniżej

prezi10

aby otworzyc VS Code

code .

Wybierz opcję Accept Both Changes i zmien jak ponizej

image

I ponownie w konsoli

git add .
git commit -m "Rozwiazuje konflikt"
git push origin master

Po ukończeniu wszystkiego git lg powinien na obu kontach wygladac podobnie do tego

image

Followup

Contributors

Made with ♥ in 2019 on github

About

Tutorial do korzystania z gita zrobiony na potrzeby data science pg

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages