SlideShare a Scribd company logo
1 of 24
Fejlesszünk okosan,
közösen
ESZKÖZÖK, MÓDSZEREK
Verziókezelés - egyénileg
Állapot rögzítése – vissza tudunk térni, mentés
Állapot megjelölése – tudjuk mi van élesben, történet
Elágaztatás – éles és fejlesztői változat
Különbség képzés és alkalmazás – diff és patch
Verziókezelés - csapatban
Amire egyénileg, továbbá
Több fejlesztő dolgozhat ugyanazon a projekten
Nem e-mailben küldözgetjük a dolgokat!
Merge – összefűzés, ütközések kezelése
Blame / praise – ki csinálta a változást
Hol találkozunk vele?
- fejlesztés, kódolás - az összes eszköz támogatja
- dokumentum management rendszerek (ECM, portál)
- felhő szolgáltatások (dropbox, o365, google drive)
- parancssor
Fogalmak
Repository
Branch, Tag, Refs
Check-out
Check-in, commit
Merge
Change list (patch és diff)
Upstream
Verziókezelők fajtái
- központosított (SVN)
- elosztott (Git)
Központosított verziókezelés (svn)
- egy központi repository (egy server)
- working copy „checkout”
- net kapcsolat folyamatosan kell
Tipikus workflow:
- checkout-change-update-(resolve)-commit
Központosított verziókezelés (svn)
Elosztott verziókezelés (git)
- van egy központi server, de nem kell folyamatosan
- teljes repository „fetch”, minden munkaállomáson megvan (kb) minden
- net kapcsolatot csak fetch és push használja
Tipikus workflow:
- fetch-merge-add-commit-push
- fetch-rebase-add-commit-push
Elosztott verziókezelés (git)
Git clone
git clone https://github.com/gabrielke/teszt1.git
Fork:
- ”elágaztatjuk” az eredeti projektet, a kapcsolat megmarad (a forrás is tud róla)
Github.com
- legnagyobb git repository
- nagyon sok cég a privát dolgait is ezen tartja
- nagyon sok opensource projekt (kb. mind) itt van
- mindent ami publikus le lehet clone-ozni
- nézegessétek a fent levő kódokat, küldjetek be javításokat, tegyétek ide a fejlesztéseiteket
- legjobb ajánlólevél a github-os usernevet elküldeni – minden látszik belőle
Git checkout
- lokális váltás a branchek között
- nem kell hozzá hálózat
- „untracked file”-okra figyelni kell (megmaradnak)
- a default branch a „master”
Git add és git commit
git add .
git add <filename>
git commit
git commit –s
git commit –m
Git remote
- távoli repository beállítása (lehet egyszerre több)
- git clone automatikusan beállítja a forrásra
- a default név: origin
- külön lehet fetch és push remote-ot állítani (nem szokás)
Git status és git log
Git status
- file-ok állapota
- tracked/untracked
- changed
Git log
- történések listája fordított időrendben
- helyi adatok alapján (fetch!)
- commit ID
Commit id
commit 71bd5420f8c0816c57678fb361b8bf7da09d6b47
- ez egy sha checksum, egyedi azonosító, nincs köze az időhöz
- amikor hivatkozunk rá, elég az első néhány jegyét (6-7) megadni
Git fetch és git push
git fetch: letölti a távoli repository-ból a változásokat (de azok még nem látszanak!)
git fetch origin
git push: feltölti a lokális commitokat (!) a remote repositoryba
git push origin
Git merge
Ez a history :
- A - B - C - D - remote HEAD

E - F - G - local HEAD
Merge után:
- A - B - C - D - remote HEAD
 
E - F - G - local HEAD - new local HEAD
Git rebase
Ez a history :
- A - B - C - D - remote HEAD

E - F - G - local HEAD
Rebase után:
- A - B - C - D - remote HEAD - E' - F' - G' - local HEAD'
Github pull request
- Javításainkat, fejlesztéseinket más projektjébe így tudjuk beküldeni.
Menete:
- megcsináljuk a javítást
- commit, push saját repoba, valamilyen branchre (nem muszáj master)
- kijelöljük a javított és a base branchet, ez alapján elkészül a pull request
Köszönöm a figyelmet!
Git rebase és git merge (opcionális)
# create a topic branch based on current master
git checkout -b my_cool_new_feature
# work on feature...
vi file
git add file
git commit -s
# meanwhile, someone else has made changes to master...
git checkout master
git pull
# now rebase so that your topic branch applies on top of current HEAD of master
git checkout my_cool_new_feature
git rebase master
Git rebase és git merge 2. (opcionális)
# fix any conflicts that may be discovered on the way
vi file
git add file
git commit -s
# resume the rebase
git rebase --continue
#merge it in locally
git checkout master
git merge my_cool_new_feature
git branch -d my_cool_new_feature
# and propagate it back out to the origin
git push
#also delete remote branch
git push origin –d my_cool_new_feature

More Related Content

Similar to Fejlesszünk okosan, közösen

Mi a baj a Drupaloddal
Mi a baj a DrupaloddalMi a baj a Drupaloddal
Mi a baj a Drupaloddalthesnufkin
 
A PHP 5.4 újdonságai
A PHP 5.4 újdonságaiA PHP 5.4 újdonságai
A PHP 5.4 újdonságaiFerenc Kovács
 
Lévai Dóra, Molnár Patrik: ELGG, nyílt forráskódú közösségi portálmotor
Lévai Dóra, Molnár Patrik: ELGG, nyílt forráskódú közösségi portálmotorLévai Dóra, Molnár Patrik: ELGG, nyílt forráskódú közösségi portálmotor
Lévai Dóra, Molnár Patrik: ELGG, nyílt forráskódú közösségi portálmotorHUNMOOT
 
Pihi CouchDB-vel és RelaxDB-vel
Pihi CouchDB-vel és RelaxDB-velPihi CouchDB-vel és RelaxDB-vel
Pihi CouchDB-vel és RelaxDB-velBalint Erdi
 
Code Review Gerrittel
Code Review GerrittelCode Review Gerrittel
Code Review GerrittelZsolt Huba
 
Az SVN használata a csapatfejlesztésben
Az SVN használata a csapatfejlesztésbenAz SVN használata a csapatfejlesztésben
Az SVN használata a csapatfejlesztésbenJános Pásztor
 
LESS, mint css preprocessor
LESS, mint css preprocessorLESS, mint css preprocessor
LESS, mint css preprocessorLevente Kiraly
 
Grid Underground projekt
Grid Underground projektGrid Underground projekt
Grid Underground projektFerenc Szalai
 
Fejlesztési kihívások a pénzügyi szektorban
Fejlesztési kihívások a pénzügyi szektorbanFejlesztési kihívások a pénzügyi szektorban
Fejlesztési kihívások a pénzügyi szektorbanPal Vojacsek
 
Hogy kerül a csizma az asztalra?
Hogy kerül a csizma az asztalra?Hogy kerül a csizma az asztalra?
Hogy kerül a csizma az asztalra?Open Academy
 
Átállás joomla 2.5 joomla 3.3
Átállás joomla 2.5   joomla 3.3Átállás joomla 2.5   joomla 3.3
Átállás joomla 2.5 joomla 3.3Tamas Rigo
 
Budapest.rb 2011/01 - Rails Deployment
Budapest.rb 2011/01 - Rails DeploymentBudapest.rb 2011/01 - Rails Deployment
Budapest.rb 2011/01 - Rails DeploymentDigital Natives
 
DB séma kezelés Liquibase-el
DB séma kezelés Liquibase-elDB séma kezelés Liquibase-el
DB séma kezelés Liquibase-elZoltán Németh
 
Cross Platform mobil app fejlesztés HTML5 JavaScript alapokon
Cross Platform mobil app fejlesztés HTML5 JavaScript alapokonCross Platform mobil app fejlesztés HTML5 JavaScript alapokon
Cross Platform mobil app fejlesztés HTML5 JavaScript alapokoneRise
 

Similar to Fejlesszünk okosan, közösen (20)

Mi a baj a Drupaloddal
Mi a baj a DrupaloddalMi a baj a Drupaloddal
Mi a baj a Drupaloddal
 
Linux alapok
Linux alapokLinux alapok
Linux alapok
 
A PHP 5.4 újdonságai
A PHP 5.4 újdonságaiA PHP 5.4 újdonságai
A PHP 5.4 újdonságai
 
Lévai Dóra, Molnár Patrik: ELGG, nyílt forráskódú közösségi portálmotor
Lévai Dóra, Molnár Patrik: ELGG, nyílt forráskódú közösségi portálmotorLévai Dóra, Molnár Patrik: ELGG, nyílt forráskódú közösségi portálmotor
Lévai Dóra, Molnár Patrik: ELGG, nyílt forráskódú közösségi portálmotor
 
Budapest.rb 201010
Budapest.rb 201010Budapest.rb 201010
Budapest.rb 201010
 
Pihi CouchDB-vel és RelaxDB-vel
Pihi CouchDB-vel és RelaxDB-velPihi CouchDB-vel és RelaxDB-vel
Pihi CouchDB-vel és RelaxDB-vel
 
Ci
CiCi
Ci
 
Code Review Gerrittel
Code Review GerrittelCode Review Gerrittel
Code Review Gerrittel
 
Az SVN használata a csapatfejlesztésben
Az SVN használata a csapatfejlesztésbenAz SVN használata a csapatfejlesztésben
Az SVN használata a csapatfejlesztésben
 
LESS, mint css preprocessor
LESS, mint css preprocessorLESS, mint css preprocessor
LESS, mint css preprocessor
 
Grid Underground projekt
Grid Underground projektGrid Underground projekt
Grid Underground projekt
 
Websocket
WebsocketWebsocket
Websocket
 
Sles admin
Sles adminSles admin
Sles admin
 
Fejlesztési kihívások a pénzügyi szektorban
Fejlesztési kihívások a pénzügyi szektorbanFejlesztési kihívások a pénzügyi szektorban
Fejlesztési kihívások a pénzügyi szektorban
 
Hogy kerül a csizma az asztalra?
Hogy kerül a csizma az asztalra?Hogy kerül a csizma az asztalra?
Hogy kerül a csizma az asztalra?
 
Alumni Release Process
Alumni Release ProcessAlumni Release Process
Alumni Release Process
 
Átállás joomla 2.5 joomla 3.3
Átállás joomla 2.5   joomla 3.3Átállás joomla 2.5   joomla 3.3
Átállás joomla 2.5 joomla 3.3
 
Budapest.rb 2011/01 - Rails Deployment
Budapest.rb 2011/01 - Rails DeploymentBudapest.rb 2011/01 - Rails Deployment
Budapest.rb 2011/01 - Rails Deployment
 
DB séma kezelés Liquibase-el
DB séma kezelés Liquibase-elDB séma kezelés Liquibase-el
DB séma kezelés Liquibase-el
 
Cross Platform mobil app fejlesztés HTML5 JavaScript alapokon
Cross Platform mobil app fejlesztés HTML5 JavaScript alapokonCross Platform mobil app fejlesztés HTML5 JavaScript alapokon
Cross Platform mobil app fejlesztés HTML5 JavaScript alapokon
 

Fejlesszünk okosan, közösen

  • 2. Verziókezelés - egyénileg Állapot rögzítése – vissza tudunk térni, mentés Állapot megjelölése – tudjuk mi van élesben, történet Elágaztatás – éles és fejlesztői változat Különbség képzés és alkalmazás – diff és patch
  • 3. Verziókezelés - csapatban Amire egyénileg, továbbá Több fejlesztő dolgozhat ugyanazon a projekten Nem e-mailben küldözgetjük a dolgokat! Merge – összefűzés, ütközések kezelése Blame / praise – ki csinálta a változást
  • 4. Hol találkozunk vele? - fejlesztés, kódolás - az összes eszköz támogatja - dokumentum management rendszerek (ECM, portál) - felhő szolgáltatások (dropbox, o365, google drive) - parancssor
  • 5. Fogalmak Repository Branch, Tag, Refs Check-out Check-in, commit Merge Change list (patch és diff) Upstream
  • 7. Központosított verziókezelés (svn) - egy központi repository (egy server) - working copy „checkout” - net kapcsolat folyamatosan kell Tipikus workflow: - checkout-change-update-(resolve)-commit
  • 9. Elosztott verziókezelés (git) - van egy központi server, de nem kell folyamatosan - teljes repository „fetch”, minden munkaállomáson megvan (kb) minden - net kapcsolatot csak fetch és push használja Tipikus workflow: - fetch-merge-add-commit-push - fetch-rebase-add-commit-push
  • 11. Git clone git clone https://github.com/gabrielke/teszt1.git Fork: - ”elágaztatjuk” az eredeti projektet, a kapcsolat megmarad (a forrás is tud róla)
  • 12. Github.com - legnagyobb git repository - nagyon sok cég a privát dolgait is ezen tartja - nagyon sok opensource projekt (kb. mind) itt van - mindent ami publikus le lehet clone-ozni - nézegessétek a fent levő kódokat, küldjetek be javításokat, tegyétek ide a fejlesztéseiteket - legjobb ajánlólevél a github-os usernevet elküldeni – minden látszik belőle
  • 13. Git checkout - lokális váltás a branchek között - nem kell hozzá hálózat - „untracked file”-okra figyelni kell (megmaradnak) - a default branch a „master”
  • 14. Git add és git commit git add . git add <filename> git commit git commit –s git commit –m
  • 15. Git remote - távoli repository beállítása (lehet egyszerre több) - git clone automatikusan beállítja a forrásra - a default név: origin - külön lehet fetch és push remote-ot állítani (nem szokás)
  • 16. Git status és git log Git status - file-ok állapota - tracked/untracked - changed Git log - történések listája fordított időrendben - helyi adatok alapján (fetch!) - commit ID
  • 17. Commit id commit 71bd5420f8c0816c57678fb361b8bf7da09d6b47 - ez egy sha checksum, egyedi azonosító, nincs köze az időhöz - amikor hivatkozunk rá, elég az első néhány jegyét (6-7) megadni
  • 18. Git fetch és git push git fetch: letölti a távoli repository-ból a változásokat (de azok még nem látszanak!) git fetch origin git push: feltölti a lokális commitokat (!) a remote repositoryba git push origin
  • 19. Git merge Ez a history : - A - B - C - D - remote HEAD E - F - G - local HEAD Merge után: - A - B - C - D - remote HEAD E - F - G - local HEAD - new local HEAD
  • 20. Git rebase Ez a history : - A - B - C - D - remote HEAD E - F - G - local HEAD Rebase után: - A - B - C - D - remote HEAD - E' - F' - G' - local HEAD'
  • 21. Github pull request - Javításainkat, fejlesztéseinket más projektjébe így tudjuk beküldeni. Menete: - megcsináljuk a javítást - commit, push saját repoba, valamilyen branchre (nem muszáj master) - kijelöljük a javított és a base branchet, ez alapján elkészül a pull request
  • 23. Git rebase és git merge (opcionális) # create a topic branch based on current master git checkout -b my_cool_new_feature # work on feature... vi file git add file git commit -s # meanwhile, someone else has made changes to master... git checkout master git pull # now rebase so that your topic branch applies on top of current HEAD of master git checkout my_cool_new_feature git rebase master
  • 24. Git rebase és git merge 2. (opcionális) # fix any conflicts that may be discovered on the way vi file git add file git commit -s # resume the rebase git rebase --continue #merge it in locally git checkout master git merge my_cool_new_feature git branch -d my_cool_new_feature # and propagate it back out to the origin git push #also delete remote branch git push origin –d my_cool_new_feature

Editor's Notes

  1. Egyik alap probléma a bináris file-ok verziókezelése
  2. Több fejlesztő ugyanazon – nem biztos h ugyanazon a file-on!
  3. Patch és diff: text és bináris fileok
  4. - látszik h a remote master branch-en egyszerre jelenik meg az összes változás - Valakinél lokálisan természetesen össze kell állnia a képnek
  5. Add – hozzáadás Commit –s : signoff Commit –m: message, nincs külön editor ablak
  6. Merge: nem írja át a lokális commitokat
  7. Itt ugye a rebase átírja a commitokat, G-t is. G’ nem volt tesztelve, G igen. Viszont a history sokkal áttekinthetőbb