University -> Next stage -> something about content tracking system, also about productive and efficient use of the ide.
1 of 48
Download to read offline
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..
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>
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
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
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
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')