際際滷

際際滷Share a Scribd company logo
Who am I ?
Name : Sawek Borowiec
Solution Architect & java frameworks trainer
Since 2005  until now
@przodownikR1
Blog: http://przewidywalna-java.blogspot.com
Hobby : Sport bikes & boxing & software
engineering
Week 2 : next stage : IDE + GIT
- jak skutecznie wykorzysta swoje IDE  czyli Twoje IDE.
- IDE, a narzdzia refaktoryzacyjne, szablony, optymalne ustawienia,
automatyzacja.
- jak dobra optymalny system kontroli wersji dla potrzeb projektu
- instalacja, konfiguracja i praca z Git
- cige odnoniki oraz przypomnienie materiau z poprzedniego tygodnia.
- jak zapewni sobie bezpieczn i komfortow prac na starcie wytwarzania,
jak dotrwa do jego koca i na dodatek zachowa zdrowie :)
Twoje IDE  maksymalne wykorzystanie przez dewelopera
podpowiedzi (warnings,skadnia,wydajno)
auto-uzupenianie
skr坦ty
pluginy
optymalizacja dziaania (uzyskiwanie po甜danej wydajnoci)
generacja kodu
testowanie
atwa integracja z systemami kontroli wersji
debugowanie
refaktoring
Eclipse
Tuning VM  eclipse.ini | sts.ini
Odpowiednie kodowanie
Automatyczny zapis przed budowaniem
Filtrowanie typ坦w (Type Filters)
Minimalizacja import坦w (Organize imports on save)
Aktualizacja do najnowszej javy i wersji IDE
Odchudzanie : startup & validation
Wycznie sprawdzania pisowni
Zamykanie niepotrzebnych projekt坦w
Wyczenie auto-walidacji i auto-budowania projektu
Wyczenie niepotrzebnych deklaracji etykiet (SVN/CVS)
Codzienno ?? :)
Git  content tracking system  Git robi r坦甜nic....
Nadzorowanie treci a nie plik坦w
Wydajno
Solidno
Rozproszenie
Mo甜liwo efektywnego zarzdzania wielkimi projektami jak jdro Linuxa (szybko i wolumen)
Lokalno (praca jest mo甜liwa nawet przy braku dostpu do sieci)
Sp坦jno (SHA-1)
Protokoy :
local (wygoda, zapis i odczyt)
local :  git clone {filepath} | git clone {file:///home/przodownik/..}
Secure Shell (SSH) (bezpieczestwo,uwie甜ytelnienie, szyfrowanie, wygoda, zapis i odczyt, dostpny port, brak anonimowego
dostpu)
ssh :  git clone ssh://user@server/myProject.git (pozwala odczyt jak i zapis)
Git (szybko, brak uwie甜ytelnienia)
HTTP (prostota,standard,HTTPS  szyfrowanie,otwarty na firewalls, ~szybko)
Serwery : GitHub , BitBucket
System kontroli wersji
source: http://programmers.stackexchange.com/questions/136079/are-there-any-statistics-that-show-the-popularity-of-git-versus-svn
ledzenie zmian w kodzie
~Praca grupowa
Przechowujemy :
source code, properties, tests,
niekt坦re binaria
Nie przechowujemy :
classes, plik坦w tymczasowych,
plik坦w ide, plik坦w zbdnych do
odpalenia projektu itd..
git vs svn, a rynek pracy
Localne
source : http://git-scm.com/book/en/v2/Getting-Started-About-Version-Control
Lokalne  atwo pomyli
katalogi i zmodyfikowa
niewaciw wersj lub
pojedynczy plik. Podejcie
bardzo prymitywne i mao
odporne na bdy,waciwie
brak mo甜liwoci pracy
grupowej.
Scentralizowane (svn, cvs, etc)
source : http://git-scm.com/book/en/v2/Getting-Started-About-Version-Control
Scentralizowane
 rozwizuje
problem pracy
grupowej,
mo甜liwo utraty
danych,
w przypadku
awarii serwera
centralnego.
Rozproszone
source : http://git-scm.com/book/en/v2/Getting-Started-About-Version-Control
Rozproszone  kopiowane jest
lokalnie cae repozytorium.
Mo甜liwo swobodnego
przeczania midzy zdalnymi
repozytoriami. atwe
odzyskiwanie danych po awarii.
Szybko pracy, komitujemy na
lokalne repozytorium, a zmiany
mo甜emy wypchn na zdalne
w dowolnym momencie, np. po
skoczeniu jakie
funkcjonalnoci
Source :techidiocy.com
Source : www.vitaliypodoba.com
Instalacja i narzdzia
sudo apt-get install gedit-plugins  gedit plugins
gitk
eGit
meld
find
wc
powoka : fish
git version
find . -name .git -type d -exec rm -fr {} /:
cherry-pick
Konfiguracja
git config {klucz} {warto} -> odczyt i modyfikacja zmiennych, kt坦re opisuj wszystkie funkcjonalnoci i zachowania git.
Plik : /etc/gitconfig: Widoczny dla wszystkich user坦w w systemie w odniesieniu do wszystkich lokalnych repozytori坦w.
git config system
Plik : ~/.gitconfig: Widoczny dla konkretnego u甜ytkownika
git config global
Plik : .git/config w aktualnym repo  odnosi si tylko do niego.
Ka甜dy poziom ma priorytet wy甜szy ni甜 poziom poprzedni !!
git config --global user.name "Sawomir Borowiec"
git config --global user.email 'przodownikR1@gmail.com'
git config --global core.editor vim
git config --global merge.tool meld
git config list
git help <polecenie>
Tworzenie synonim坦w
git config global alias.logp 'log graph abbrev-commit pretty=oneline'
git.igonore
Ignorowanie plik坦w z przestrzeni roboczej
Korzystanie ze wzorc坦w
nazwa katalogu (/)
nazwa pliku dopasowany literalnie do wzorca
!  negacja dalsze czci wzorca
..etc
Gwiazdka (*) dopasowuje zero lub wicej znak坦w;
[abc] dopasowuje dowolny znak znajdujcy si wewntrz nawiasu kwadratowego (w
tym przypadku a, b lub c);
znak zapytania (?) dopasowuje pojedynczy znak;
nawias kwadratowy zawierajcy znaki rozdzielone mylnikiem ([0-9]) dopasowuje
dowolny znajdujcy si pomidzy nimi znak (w tym przypadku od 0 do 9).
source : http://git-scm.com/book/pl/v1/Podstawy-Gita-Rejestrowanie-zmian-w-repozytorium
Pojcia
origin  nazwa zdalnego g坦wnego repo
head  wskazuje nasze bie甜ce miejsce w branch'u
master  nazwa g坦wnego branch'a
repozytorium (archiwum) (repository)  historia zmian (repo) (object store + index) (.git)
obszar roboczy  zbi坦r plik坦w na kt坦rych pracujemy
commit  zbi坦r zmian , kt坦re maj by utrwalone  zapisanie zmian w repozytorium
branch  ga添 g坦wnego korzenia majca na celu np. tworzenie nowej funkcjonalnoci
tag  traktuj to jako zakadk poszczeg坦lnych rewizji (commit'坦w)
index (stage) - zawiera informacje o tym, czego dotyczy bdzie nastpna operacja commit. (.git)
pull request: - 甜danie poczenia Twoich zmian z innym branch'em lub repozytorium
check out - aktualizacja Twojego obszaru roboczego z dan gazi , rewizja czy zakadk
merge  poczenie odrbnych gazi w jedn cao.
push - wysanie zmian na zdalne repozytorium
pull- pobranie zmian ze zdalnego repozytorium
Git Tworzenie repo
git init  tworzenie nowego  .git
git clone  kopiowanie istniejcego
git clone {url} {new_clone_repo_name}
Surowe  synchronizacja projekt坦w, tylko folder .git bez
obszaru roboczego oraz indeksu. S to repozytoria
przeznaczone do udostpniania w sieci  git push, git pull
(brak bezporedniego miejsca na jakiekolwiek zmiany)
git init --bare  git init bare {path}
git clone --bare
Github Quick setup
https://github.com/przodownikR1/testr2.git
echo "# testr2" >> README.md
git init
git add README.md
git commit -m "first commit"
git remote add origin https://github.com/przodownikR1/testr2.git
git push -u origin master
or push an existing repository from the command line
git remote add origin https://github.com/przodownikR1/testr2.git
git push -u origin master
Git init, add, commit, status
git add  zmiana stanu pliku z nienadzorowanego
na nadzorowany
git add . == git add -A
git commit -a -m '' - uwzgldnij dodane ju甜 pliki
podczas dodawania do repo (git add . | git commit)
git status == git ls-files -s
git commit ammend {filename}  wymuszenie
dodania pliku do rewizji
Git rm
git rm odwrotno git add
git rm cached {filename}  usuwa plik z
indeksu ale pozostawia do w przestrzeni
roboczej
git rm {filename}  usuwa plik z indeksu i
przestrzeni roboczej
git rm -f {filename}  usunicie bez wzgldu
na inne czynniki
Git mv
mv fileOne fileTwo
git rm fileOne + git add fileTwo
==
git mv fileOne fileTwo
Git mv
mv fileOne fileTwo
git rm fileOne + git add fileTwo
==
git mv fileOne fileTwo
File status lifecycle
Stany pliku
Zatwierdzony - oznacza, 甜e dane zostay bezpiecznie zachowane w Twojej lokalnej bazie danych.
Zmodyfikowany - oznacza, 甜e plik zosta zmieniony, ale zmiany nie zostay wprowadzone do bazy
danych.
ledzony, nadzorowany (tracked)- oznacza, 甜e zmodyfikowany plik zosta przeznaczony do
zatwierdzenia w bie甜cej postaci w nastpnej operacji commit. (git add {someFile})
Plik aktualny (unmodified file)  mo甜liwy jest do zawsze mo甜liwy do odzyskania (checkout) (obecny
w repo git add + git commit). Nie mo甜na go zaindeksowa.
Plik zmodyfikowany (modified file)  to plik posiadajcy r坦甜nice pomidzy wersj w repo , a obszarem
roboczym
Plik nieledzony, nienadzorowany (untrucked file)  to nowo utworzony plik w obszarze roboczym
nie bdcy czci 甜adnej rewizji (repo czy indeksie)
Plik zaindeksowany (staged file)  objty operacj commit
Plik niezaindeksowany (unstaged file)  zmodyfikowany plik, kt坦ry nie zosta zaindeksowany (nie
wystpujcy w bazie index)
Plik pomijany (ignored file)  niewidoczny dla archiwum (.gitignore)
Source : http://tex.stackexchange.com/questions/70320/workflow-diagram
Git branch
Pozwala na prac rozwojow prowadzon w jakim konkretnym celu
np. dodaniu nowej funkcjonalnoci lub poprawie bd坦w
Branch = zadanie !!
git branch {branch_name}  tworzenie
git branch  lista lokalnych branch'y (-v | -r | -a )
git branch -d {branch_name}  skasowanie branch'a
git show-branch  bardziej dokadny ni甜 git branch (chronologicznie)
git checkout -b {branch_name}
git branch merged no-merged -wywietlenia gazi, kt坦re ju甜
zostay lub jeszcze nie zostay scalone do aktywnej gazi
Git : reset, checkout
Przywracanie obszaru roboczego do stanu z wybranej rewizji
git reset hard {rev}  p坦添niejsze rewizje s usuwane z historii !
git checkout -f {rev}  repo znajduje si w stanie detached
git checkout -f {rev} {filename}  odzyskanie pliku z danej rewizji
git chechout  {filename} - cofanie zmian w zmodyfikowanym pliku
Logs
git log -p -5  pokazuje r坦甜nice wprowadzone z ka甜d rewizj
Opcje :
- short
- full
- fuller
git log --pretty=oneline
git log --pretty=format:"%h - %an, %ar : %s"
Opis :
%h Skr坦cona suma kontrolna zmiany
%an Nazwisko autora
%ae Adres e-mail autora
%ad Data autora
%ar Wzgldna data autora
%cn Nazwisko zatwierdzajcego zmiany
%ce Adres e-mail zatwierdzajcego zmiany
%cd Data zatwierdzajcego zmiany
%cr Data zatwierdzajcego zmiany, wzgldna
%s Temat
Przykad : logs
przodownik~/w/spring-boot (master| )$ git log --pretty=format:"%h - %an, %ar : %s" --author Rob
15:51
 7ecbbc1 - Rob Winch, 7 weeks ago : Merge branch '1.2.x'
 493d7a3 - Rob Winch, 7 weeks ago : Merge branch '1.1.x' into 1.2.x
 760d6ec - Rob Winch, 7 weeks ago : Fix Unnecessarily Adding Default Security User
 f9816ea - Rob Winch, 2 months ago : Fix configureGlobal on SpringBootApplication
 e42fa79 - Rob Winch, 2 months ago : Fix fragile AuthenticationManagerConfiguration
 adb2205 - Rob Winch, 11 months ago : Make SpringBootPlugin more Groovy
 52382f9 - Rob Winch, 11 months ago : Default Compile tasks to use UTF-8 encoding
 ae7098a - Rob Winch, 1 year, 1 month ago : Add RepositoryRestMvcAutoConfiguration
 f852096 - Rob Winch, 1 year, 1 month ago : Security Documentation Cleanup
 6b0eba3 - Rob Winch, 1 year, 2 months ago : Update to Spring Security 3.2.1
 6c5701b - Rob Winch, 1 year, 3 months ago : Use @Autowired AuthenticationManagerBuilder
 77b5ad1 - Rob Winch, 1 year, 6 months ago : Update to Spring Security Snapshot
 f40758c - Rob Winch, 1 year, 8 months ago : Update README link text to be M1
 3662a8b - Rob Winch, 1 year, 9 months ago : Fix README Quick Start Java Example
Przykad : logs
--since 'yyyy-mm-dd' '| --until | --author | -n
--abbrev-commit - skr坦cenie SHA
--abbrev=4 - skr坦cenie SHA
przodownik ~/w/spring-boot (master| )$ find . -type f -print | grep -v '/.git/' | wc
-l
=> 2472
przodownik ~/w/spring-boot (master| )$ git log --pretty=oneline --author Rob |
wc -l
=> 14
przodownik ~/w/spring-boot (master| )$ git log --pretty=oneline | wc -l
=> 4425
git log --since=2.weeks
Tags
opisane (annotated tags)
- dane o autorze
- dat utworzenia
- komentarz
- SHA rewizji
lekkie (lightweight tags)  (.git/refs/tags)
- tylko SHA rewizji
Git push nie przesya etykiet do zdalnego repozytorium !
git push origin [tag_name]
Tags
git tag -a {nazwa} -m {komentarz}  (opisowy)
Znacznik musi by unikalny
git tag {nazwa}  (lekki)
git tag -d {nazwa}  usuwanie znacznika
git tag  listuje znaczniki
git log --tags --simplify-by-decoration
--pretty="format :%ai %d %an %s" | sort
git describe  lista dostpnych znacznik坦w opisanych
git show -s {tagName}  wywietlenie szczeg坦坦w
Kompresja
git archive --format=zip --output={fileName} SHA
Wygenerowanie skompresowanego archiwum
odpowiadajcego danej rewizji. Zamiast rewizji SHA mo甜na
u甜y znacznik坦w.
Git stash
Traktuj stash jako schowek czy skrytk.
git stash list
git stash  dodanie do skrytki
git stash pop  z usuniciem ze stosu
git stash apply  bez usunicia ze stosu
git stash drop  usunicie ze skrytki
Git remote
Sprawdzanie zdalnych repozytori坦w i tworzenie poczenia z nimi.
git remote | remote -v
git remote add origin {url}
git remote origin
remote show [remote_repo]
git remote rename {old_name} {new_name}
git push [remote_repo] :[branch]  usuwanie zdalnej gazi
git push origin delete [remote_branch]  odpowiednik powy甜szego
Git push
Wypychanie zmian do zdalnego repozytorium
git push -u origin master
przodownik ~/b/university_training (step13_templates| )$ git branch step14_git
przodownik ~/b/university_training (step13_templates| )$ git checkout step14_git
Switched to branch 'step14_git'
przodownik ~/b/university_training (step14_git| )$ git push origin step14_git
Total 0 (delta 0), reused 0 (delta 0)
To https://github.com/przodownikR1/university_training.git
* [new branch] step14_git -> step14_git
przodownik ~/b/university_training (step14_git| )$
Git pull, fetch
Pobiera zmian ze zdalnego repo
git pull {repo_name} {branch_name}
git fetch {repo_name}  pobiera zmiany ze zdalnego
brancha
Git merge
git merge {branchName}  przeniesienie zmian z gazi branchName do bie甜cej
przodownik /t/gitRepo (master| )$ git merge hotfix
Updating 5c8bc03..cde1827
Fast-forward
1.java | 1 +
hot.java | 1 +
main.java | 1 +
3 files changed, 3 insertions(+)
create mode 100644 1.java
create mode 100644 hot.java
przodownik /t/gitRepo (master| )$ git prettyAll
* cde1827 (HEAD, master, hotfix) a hotfix
| * c4452d1 (feature) a added
| * 3ca2549 a feature
|/
* 5c8bc03 a
przodownik /t/gitRepo (master| )$ git branch -d hotfix
Deleted branch hotfix (was cde1827).
przodownik /t/gitRepo (master| )$ git prettyAll
in 0.1 seconds automatically...
* cde1827 (HEAD, master) a hotfix
| * c4452d1 (feature) a added
| * 3ca2549 a feature
|/
* 5c8bc03 a
Merge example - continue
przodownik /t/gitRepo (feature| )$ git merge master
Auto-merging main.java
CONFLICT (content): Merge conflict in main.javaAuto-merging 1.java
CONFLICT (add/add): Merge conflict in 1.java
Automatic merge failed; fix conflicts and then commit the result
przodownik /t/gitRepo (feature|MERGING|2 1 3)$  git status
On branch feature
You have unmerged paths.
(fix conflicts and run "git commit")
Changes to be committed:new file: hot.java
Unmerged paths:
(use "git add <file>..." to mark resolution)
both added: 1.java
both modified: main.java
przodownik /t/gitRepo (feature|MERGING|2 1 3)$  git commit -a
[feature 7e57cf1] Merge branch 'master' into feature
przodownik /t/gitRepo (feature| )$ git status
On branch feature
nothing to commit, working directory clean
Merge  conflicts
<<<<<HEAD - aktualna ga添 w kt坦rej obecnie si znajdujesz.
<<<<<< ======= >>>>>> - usuwamy
git add .
git commit ..
git mergetool  narzdzie do uatwniania operacji scalania.
Git rebase
Integrowanie zmian z jednej gazi do drugiej
jest mo甜liwe dziki operacji :
- merge -scalanie
- rebase  zmiana bazy
Nie zmieniaj bazy rewizji, kt坦re wypchne ju甜
do publicznego repozytorium !!
git rebase -i {rev} - czenie rewizji
git rebase -i rev_12
git rebase -i HEAD~3
pick (p)  dana rewizja zostanie zapisana w
historii po zakoczeniu operacji
reword (r)  pick + opis
edit (e)  pick + edycja zmian w rewizji
squash (s)  czy podan rewizj z
poprzedni
fixup (f)  squash bez modyfikacji komentarza
exec (x)  wiersz polece
Merge/Rebase source: http://git-scm.com/book/pl/v1/Ga%C5%82%C4%99zie-Gita-Zmiana-bazy
-merge
Git revert
git revert no-edit {rev}  usunicie zmian wprowadzonych przez dan
rewizje.
--no-edit = domylny komentarz 'Revert '
Git diff
Por坦wnujemy pliki, rewizje i cae branch'e
git diff cached  co z indeksu trafi do repozytorium
git difftool cached  to co wy甜ej ale z u甜yciem
narzdzia do wskazywania r坦甜ni np. meld.
git diff  zmiany spoza poczekalni
git diff {branch} {rev} {conrete_file}  pokazuje r坦甜nice
wzgldem branch'a, rewizji, pliku lub pakietu
git diff stat - statystyki
Git apply - aty
git apply /home/przodownik/main.java.patch  wczytywanie aty
(wsp坦pracuje z git diff, zasada : 'zaakceptuj lub odrzu wszystko')
Koniec :)
Dzikuje za uwag :)

More Related Content

University day 2

  • 1. Who am I ? Name : Sawek Borowiec Solution Architect & java frameworks trainer Since 2005 until now @przodownikR1 Blog: http://przewidywalna-java.blogspot.com Hobby : Sport bikes & boxing & software engineering
  • 2. Week 2 : next stage : IDE + GIT - jak skutecznie wykorzysta swoje IDE czyli Twoje IDE. - IDE, a narzdzia refaktoryzacyjne, szablony, optymalne ustawienia, automatyzacja. - jak dobra optymalny system kontroli wersji dla potrzeb projektu - instalacja, konfiguracja i praca z Git - cige odnoniki oraz przypomnienie materiau z poprzedniego tygodnia. - jak zapewni sobie bezpieczn i komfortow prac na starcie wytwarzania, jak dotrwa do jego koca i na dodatek zachowa zdrowie :)
  • 3. Twoje IDE maksymalne wykorzystanie przez dewelopera podpowiedzi (warnings,skadnia,wydajno) auto-uzupenianie skr坦ty pluginy optymalizacja dziaania (uzyskiwanie po甜danej wydajnoci) generacja kodu testowanie atwa integracja z systemami kontroli wersji debugowanie refaktoring
  • 4. Eclipse Tuning VM eclipse.ini | sts.ini Odpowiednie kodowanie Automatyczny zapis przed budowaniem Filtrowanie typ坦w (Type Filters) Minimalizacja import坦w (Organize imports on save) Aktualizacja do najnowszej javy i wersji IDE Odchudzanie : startup & validation Wycznie sprawdzania pisowni Zamykanie niepotrzebnych projekt坦w Wyczenie auto-walidacji i auto-budowania projektu Wyczenie niepotrzebnych deklaracji etykiet (SVN/CVS)
  • 6. Git content tracking system Git robi r坦甜nic.... Nadzorowanie treci a nie plik坦w Wydajno Solidno Rozproszenie Mo甜liwo efektywnego zarzdzania wielkimi projektami jak jdro Linuxa (szybko i wolumen) Lokalno (praca jest mo甜liwa nawet przy braku dostpu do sieci) Sp坦jno (SHA-1) Protokoy : local (wygoda, zapis i odczyt) local : git clone {filepath} | git clone {file:///home/przodownik/..} Secure Shell (SSH) (bezpieczestwo,uwie甜ytelnienie, szyfrowanie, wygoda, zapis i odczyt, dostpny port, brak anonimowego dostpu) ssh : git clone ssh://user@server/myProject.git (pozwala odczyt jak i zapis) Git (szybko, brak uwie甜ytelnienia) HTTP (prostota,standard,HTTPS szyfrowanie,otwarty na firewalls, ~szybko) Serwery : GitHub , BitBucket
  • 7. System kontroli wersji source: http://programmers.stackexchange.com/questions/136079/are-there-any-statistics-that-show-the-popularity-of-git-versus-svn ledzenie zmian w kodzie ~Praca grupowa Przechowujemy : source code, properties, tests, niekt坦re binaria Nie przechowujemy : classes, plik坦w tymczasowych, plik坦w ide, plik坦w zbdnych do odpalenia projektu itd..
  • 8. git vs svn, a rynek pracy
  • 9. Localne source : http://git-scm.com/book/en/v2/Getting-Started-About-Version-Control Lokalne atwo pomyli katalogi i zmodyfikowa niewaciw wersj lub pojedynczy plik. Podejcie bardzo prymitywne i mao odporne na bdy,waciwie brak mo甜liwoci pracy grupowej.
  • 10. Scentralizowane (svn, cvs, etc) source : http://git-scm.com/book/en/v2/Getting-Started-About-Version-Control Scentralizowane rozwizuje problem pracy grupowej, mo甜liwo utraty danych, w przypadku awarii serwera centralnego.
  • 11. Rozproszone source : http://git-scm.com/book/en/v2/Getting-Started-About-Version-Control Rozproszone kopiowane jest lokalnie cae repozytorium. Mo甜liwo swobodnego przeczania midzy zdalnymi repozytoriami. atwe odzyskiwanie danych po awarii. Szybko pracy, komitujemy na lokalne repozytorium, a zmiany mo甜emy wypchn na zdalne w dowolnym momencie, np. po skoczeniu jakie funkcjonalnoci
  • 14. Instalacja i narzdzia sudo apt-get install gedit-plugins gedit plugins gitk eGit meld find wc powoka : fish git version find . -name .git -type d -exec rm -fr {} /: cherry-pick
  • 15. Konfiguracja git config {klucz} {warto} -> odczyt i modyfikacja zmiennych, kt坦re opisuj wszystkie funkcjonalnoci i zachowania git. Plik : /etc/gitconfig: Widoczny dla wszystkich user坦w w systemie w odniesieniu do wszystkich lokalnych repozytori坦w. git config system Plik : ~/.gitconfig: Widoczny dla konkretnego u甜ytkownika git config global Plik : .git/config w aktualnym repo odnosi si tylko do niego. Ka甜dy poziom ma priorytet wy甜szy ni甜 poziom poprzedni !! git config --global user.name "Sawomir Borowiec" git config --global user.email 'przodownikR1@gmail.com' git config --global core.editor vim git config --global merge.tool meld git config list git help <polecenie>
  • 16. Tworzenie synonim坦w git config global alias.logp 'log graph abbrev-commit pretty=oneline'
  • 17. git.igonore Ignorowanie plik坦w z przestrzeni roboczej Korzystanie ze wzorc坦w nazwa katalogu (/) nazwa pliku dopasowany literalnie do wzorca ! negacja dalsze czci wzorca ..etc Gwiazdka (*) dopasowuje zero lub wicej znak坦w; [abc] dopasowuje dowolny znak znajdujcy si wewntrz nawiasu kwadratowego (w tym przypadku a, b lub c); znak zapytania (?) dopasowuje pojedynczy znak; nawias kwadratowy zawierajcy znaki rozdzielone mylnikiem ([0-9]) dopasowuje dowolny znajdujcy si pomidzy nimi znak (w tym przypadku od 0 do 9). source : http://git-scm.com/book/pl/v1/Podstawy-Gita-Rejestrowanie-zmian-w-repozytorium
  • 18. Pojcia origin nazwa zdalnego g坦wnego repo head wskazuje nasze bie甜ce miejsce w branch'u master nazwa g坦wnego branch'a repozytorium (archiwum) (repository) historia zmian (repo) (object store + index) (.git) obszar roboczy zbi坦r plik坦w na kt坦rych pracujemy commit zbi坦r zmian , kt坦re maj by utrwalone zapisanie zmian w repozytorium branch ga添 g坦wnego korzenia majca na celu np. tworzenie nowej funkcjonalnoci tag traktuj to jako zakadk poszczeg坦lnych rewizji (commit'坦w) index (stage) - zawiera informacje o tym, czego dotyczy bdzie nastpna operacja commit. (.git) pull request: - 甜danie poczenia Twoich zmian z innym branch'em lub repozytorium check out - aktualizacja Twojego obszaru roboczego z dan gazi , rewizja czy zakadk merge poczenie odrbnych gazi w jedn cao. push - wysanie zmian na zdalne repozytorium pull- pobranie zmian ze zdalnego repozytorium
  • 19. Git Tworzenie repo git init tworzenie nowego .git git clone kopiowanie istniejcego git clone {url} {new_clone_repo_name} Surowe synchronizacja projekt坦w, tylko folder .git bez obszaru roboczego oraz indeksu. S to repozytoria przeznaczone do udostpniania w sieci git push, git pull (brak bezporedniego miejsca na jakiekolwiek zmiany) git init --bare git init bare {path} git clone --bare
  • 20. Github Quick setup https://github.com/przodownikR1/testr2.git echo "# testr2" >> README.md git init git add README.md git commit -m "first commit" git remote add origin https://github.com/przodownikR1/testr2.git git push -u origin master or push an existing repository from the command line git remote add origin https://github.com/przodownikR1/testr2.git git push -u origin master
  • 21. Git init, add, commit, status git add zmiana stanu pliku z nienadzorowanego na nadzorowany git add . == git add -A git commit -a -m '' - uwzgldnij dodane ju甜 pliki podczas dodawania do repo (git add . | git commit) git status == git ls-files -s git commit ammend {filename} wymuszenie dodania pliku do rewizji
  • 22. Git rm git rm odwrotno git add git rm cached {filename} usuwa plik z indeksu ale pozostawia do w przestrzeni roboczej git rm {filename} usuwa plik z indeksu i przestrzeni roboczej git rm -f {filename} usunicie bez wzgldu na inne czynniki
  • 23. Git mv mv fileOne fileTwo git rm fileOne + git add fileTwo == git mv fileOne fileTwo
  • 24. Git mv mv fileOne fileTwo git rm fileOne + git add fileTwo == git mv fileOne fileTwo
  • 26. Stany pliku Zatwierdzony - oznacza, 甜e dane zostay bezpiecznie zachowane w Twojej lokalnej bazie danych. Zmodyfikowany - oznacza, 甜e plik zosta zmieniony, ale zmiany nie zostay wprowadzone do bazy danych. ledzony, nadzorowany (tracked)- oznacza, 甜e zmodyfikowany plik zosta przeznaczony do zatwierdzenia w bie甜cej postaci w nastpnej operacji commit. (git add {someFile}) Plik aktualny (unmodified file) mo甜liwy jest do zawsze mo甜liwy do odzyskania (checkout) (obecny w repo git add + git commit). Nie mo甜na go zaindeksowa. Plik zmodyfikowany (modified file) to plik posiadajcy r坦甜nice pomidzy wersj w repo , a obszarem roboczym Plik nieledzony, nienadzorowany (untrucked file) to nowo utworzony plik w obszarze roboczym nie bdcy czci 甜adnej rewizji (repo czy indeksie) Plik zaindeksowany (staged file) objty operacj commit Plik niezaindeksowany (unstaged file) zmodyfikowany plik, kt坦ry nie zosta zaindeksowany (nie wystpujcy w bazie index) Plik pomijany (ignored file) niewidoczny dla archiwum (.gitignore)
  • 28. Git branch Pozwala na prac rozwojow prowadzon w jakim konkretnym celu np. dodaniu nowej funkcjonalnoci lub poprawie bd坦w Branch = zadanie !! git branch {branch_name} tworzenie git branch lista lokalnych branch'y (-v | -r | -a ) git branch -d {branch_name} skasowanie branch'a git show-branch bardziej dokadny ni甜 git branch (chronologicznie) git checkout -b {branch_name} git branch merged no-merged -wywietlenia gazi, kt坦re ju甜 zostay lub jeszcze nie zostay scalone do aktywnej gazi
  • 29. Git : reset, checkout Przywracanie obszaru roboczego do stanu z wybranej rewizji git reset hard {rev} p坦添niejsze rewizje s usuwane z historii ! git checkout -f {rev} repo znajduje si w stanie detached git checkout -f {rev} {filename} odzyskanie pliku z danej rewizji git chechout {filename} - cofanie zmian w zmodyfikowanym pliku
  • 30. Logs git log -p -5 pokazuje r坦甜nice wprowadzone z ka甜d rewizj Opcje : - short - full - fuller git log --pretty=oneline git log --pretty=format:"%h - %an, %ar : %s" Opis : %h Skr坦cona suma kontrolna zmiany %an Nazwisko autora %ae Adres e-mail autora %ad Data autora %ar Wzgldna data autora %cn Nazwisko zatwierdzajcego zmiany %ce Adres e-mail zatwierdzajcego zmiany %cd Data zatwierdzajcego zmiany %cr Data zatwierdzajcego zmiany, wzgldna %s Temat
  • 31. Przykad : logs przodownik~/w/spring-boot (master| )$ git log --pretty=format:"%h - %an, %ar : %s" --author Rob 15:51 7ecbbc1 - Rob Winch, 7 weeks ago : Merge branch '1.2.x' 493d7a3 - Rob Winch, 7 weeks ago : Merge branch '1.1.x' into 1.2.x 760d6ec - Rob Winch, 7 weeks ago : Fix Unnecessarily Adding Default Security User f9816ea - Rob Winch, 2 months ago : Fix configureGlobal on SpringBootApplication e42fa79 - Rob Winch, 2 months ago : Fix fragile AuthenticationManagerConfiguration adb2205 - Rob Winch, 11 months ago : Make SpringBootPlugin more Groovy 52382f9 - Rob Winch, 11 months ago : Default Compile tasks to use UTF-8 encoding ae7098a - Rob Winch, 1 year, 1 month ago : Add RepositoryRestMvcAutoConfiguration f852096 - Rob Winch, 1 year, 1 month ago : Security Documentation Cleanup 6b0eba3 - Rob Winch, 1 year, 2 months ago : Update to Spring Security 3.2.1 6c5701b - Rob Winch, 1 year, 3 months ago : Use @Autowired AuthenticationManagerBuilder 77b5ad1 - Rob Winch, 1 year, 6 months ago : Update to Spring Security Snapshot f40758c - Rob Winch, 1 year, 8 months ago : Update README link text to be M1 3662a8b - Rob Winch, 1 year, 9 months ago : Fix README Quick Start Java Example
  • 32. Przykad : logs --since 'yyyy-mm-dd' '| --until | --author | -n --abbrev-commit - skr坦cenie SHA --abbrev=4 - skr坦cenie SHA przodownik ~/w/spring-boot (master| )$ find . -type f -print | grep -v '/.git/' | wc -l => 2472 przodownik ~/w/spring-boot (master| )$ git log --pretty=oneline --author Rob | wc -l => 14 przodownik ~/w/spring-boot (master| )$ git log --pretty=oneline | wc -l => 4425 git log --since=2.weeks
  • 33. Tags opisane (annotated tags) - dane o autorze - dat utworzenia - komentarz - SHA rewizji lekkie (lightweight tags) (.git/refs/tags) - tylko SHA rewizji Git push nie przesya etykiet do zdalnego repozytorium ! git push origin [tag_name]
  • 34. Tags git tag -a {nazwa} -m {komentarz} (opisowy) Znacznik musi by unikalny git tag {nazwa} (lekki) git tag -d {nazwa} usuwanie znacznika git tag listuje znaczniki git log --tags --simplify-by-decoration --pretty="format :%ai %d %an %s" | sort git describe lista dostpnych znacznik坦w opisanych git show -s {tagName} wywietlenie szczeg坦坦w
  • 35. Kompresja git archive --format=zip --output={fileName} SHA Wygenerowanie skompresowanego archiwum odpowiadajcego danej rewizji. Zamiast rewizji SHA mo甜na u甜y znacznik坦w.
  • 36. Git stash Traktuj stash jako schowek czy skrytk. git stash list git stash dodanie do skrytki git stash pop z usuniciem ze stosu git stash apply bez usunicia ze stosu git stash drop usunicie ze skrytki
  • 37. Git remote Sprawdzanie zdalnych repozytori坦w i tworzenie poczenia z nimi. git remote | remote -v git remote add origin {url} git remote origin remote show [remote_repo] git remote rename {old_name} {new_name} git push [remote_repo] :[branch] usuwanie zdalnej gazi git push origin delete [remote_branch] odpowiednik powy甜szego
  • 38. Git push Wypychanie zmian do zdalnego repozytorium git push -u origin master przodownik ~/b/university_training (step13_templates| )$ git branch step14_git przodownik ~/b/university_training (step13_templates| )$ git checkout step14_git Switched to branch 'step14_git' przodownik ~/b/university_training (step14_git| )$ git push origin step14_git Total 0 (delta 0), reused 0 (delta 0) To https://github.com/przodownikR1/university_training.git * [new branch] step14_git -> step14_git przodownik ~/b/university_training (step14_git| )$
  • 39. Git pull, fetch Pobiera zmian ze zdalnego repo git pull {repo_name} {branch_name} git fetch {repo_name} pobiera zmiany ze zdalnego brancha
  • 40. Git merge git merge {branchName} przeniesienie zmian z gazi branchName do bie甜cej przodownik /t/gitRepo (master| )$ git merge hotfix Updating 5c8bc03..cde1827 Fast-forward 1.java | 1 + hot.java | 1 + main.java | 1 + 3 files changed, 3 insertions(+) create mode 100644 1.java create mode 100644 hot.java przodownik /t/gitRepo (master| )$ git prettyAll * cde1827 (HEAD, master, hotfix) a hotfix | * c4452d1 (feature) a added | * 3ca2549 a feature |/ * 5c8bc03 a przodownik /t/gitRepo (master| )$ git branch -d hotfix Deleted branch hotfix (was cde1827). przodownik /t/gitRepo (master| )$ git prettyAll in 0.1 seconds automatically... * cde1827 (HEAD, master) a hotfix | * c4452d1 (feature) a added | * 3ca2549 a feature |/ * 5c8bc03 a
  • 41. Merge example - continue przodownik /t/gitRepo (feature| )$ git merge master Auto-merging main.java CONFLICT (content): Merge conflict in main.javaAuto-merging 1.java CONFLICT (add/add): Merge conflict in 1.java Automatic merge failed; fix conflicts and then commit the result przodownik /t/gitRepo (feature|MERGING|2 1 3)$ git status On branch feature You have unmerged paths. (fix conflicts and run "git commit") Changes to be committed:new file: hot.java Unmerged paths: (use "git add <file>..." to mark resolution) both added: 1.java both modified: main.java przodownik /t/gitRepo (feature|MERGING|2 1 3)$ git commit -a [feature 7e57cf1] Merge branch 'master' into feature przodownik /t/gitRepo (feature| )$ git status On branch feature nothing to commit, working directory clean
  • 42. Merge conflicts <<<<<HEAD - aktualna ga添 w kt坦rej obecnie si znajdujesz. <<<<<< ======= >>>>>> - usuwamy git add . git commit .. git mergetool narzdzie do uatwniania operacji scalania.
  • 43. Git rebase Integrowanie zmian z jednej gazi do drugiej jest mo甜liwe dziki operacji : - merge -scalanie - rebase zmiana bazy Nie zmieniaj bazy rewizji, kt坦re wypchne ju甜 do publicznego repozytorium !! git rebase -i {rev} - czenie rewizji git rebase -i rev_12 git rebase -i HEAD~3 pick (p) dana rewizja zostanie zapisana w historii po zakoczeniu operacji reword (r) pick + opis edit (e) pick + edycja zmian w rewizji squash (s) czy podan rewizj z poprzedni fixup (f) squash bez modyfikacji komentarza exec (x) wiersz polece
  • 45. Git revert git revert no-edit {rev} usunicie zmian wprowadzonych przez dan rewizje. --no-edit = domylny komentarz 'Revert '
  • 46. Git diff Por坦wnujemy pliki, rewizje i cae branch'e git diff cached co z indeksu trafi do repozytorium git difftool cached to co wy甜ej ale z u甜yciem narzdzia do wskazywania r坦甜ni np. meld. git diff zmiany spoza poczekalni git diff {branch} {rev} {conrete_file} pokazuje r坦甜nice wzgldem branch'a, rewizji, pliku lub pakietu git diff stat - statystyki
  • 47. Git apply - aty git apply /home/przodownik/main.java.patch wczytywanie aty (wsp坦pracuje z git diff, zasada : 'zaakceptuj lub odrzu wszystko')