- VS Code
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.
Git - rozproszony system kontroli wersji zapoczątkowany przez Linusa Trovalda (twórcę Linuxa) (DVCS - distributed version control system)
ze strony https://git-scm.com/book/en/v1/Getting-Started-Git-Basics
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.
Strona internetowa i serwis służący do przechowywania projektów i dzielenia się kodem z innymi użytkownikami.
Pobieramy gita Next, next, next
git config --global user.name "toumash" # login z githuba
git config --global user.email "mr.toumash@gmail.com" # adres email z githuba
3 stany w których jest każdy plik:
- Working directory
- Staging area
- Git directory
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
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
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
- Do czego służy?
- W jaki sposób wrzucić kod z dysku?
- Dzielimy się na pary Tomasz i Alicja
-
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
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
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ę
- Zforkuj repozytorium klikając Fork w prawym górnym rogu panelu repozytorium
- Zclonuj repozytorium na swój komputer
git clone <link z githuba>
- Stwórz i przełącz się na nowy branch
feature/wiecej-opcji
git branch feature/wiecej-opcji
git checkout feature/wiecej-opcji
- Zacznij implementacje
feature/wiecej-opcji
zgodnie z kodem poniżej
Zmienia zakres liczb na (1,9) i dodaje kolejny elif "My answers are real"
- Zacommituj zmiany na brancha
git add .
git commit -m "zmienia sposob wyswietlania wiadomosci"
git push origin feature/wiecej-opcji
- Zobacz jak to wyglada w historii za pomocą aliasu, który stworzyliśmy wcześniej.
git lg
- Wejdz na mastera jako pierwszy (przed Alicją) i zmerguj zmiany
git checkout master
git merge feature/wiecej-opcji
git push origin master
-
Pomóż w razie potrzeby swojemu partnerowi/partnerce
-
Po ukończeniu wszystkiego
git lg
powinien na obu kontach wygladac podobnie do tego
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"
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"
Następnie w konsoli wejdź do wybranego folderu, gdzie chcesz umieścić to repozytorium i wpisz komendę git clone razem ze skopiowanym UWAGA TO MA BYĆ LINK Z REPOZYTORIUM OSOBY OBOK, KTÓRA WCZEŚNIEJ SFORKOWAŁA KOD Z DATA-SCIENCE-PG, NIE SUGEROWAĆ SIĘ TYM ŻE W KONSOLI JEST LINK Z DATA-SCIENCE-PG !
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"
Kod ma wyglądać jak wyżej.
Następnie wracamy do konsoli i wpisujemy:
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
aby otworzyc VS Code
code .
Wybierz opcję Accept Both Changes i zmien jak ponizej
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
- Git checksheet (kliknij aby pobrać)
- git.wtf - najczęstsze problemy z gitem
- Git branching by Atlassian - Gałęzie wytłumaczone przez Atlassian
Made with ♥ in 2019 on github