Git, verziókezelés Flashcards

1
Q

Mire jó a git?

A

Egyik legnépszerűbb elosztott verziókezelő a piacon a Git.
* A repositoryban tároljuk a változásokat.
* Nem csak a szerveren, hanem minden gépen ott van a teljes repository. (local és remote)
* A Git koordinálja a munkát és javaslatokat ad, hogy hogyan használjuk.
* Vissza tudjuk követni, hogy ki mikor és mit csinált.
* Régebbi verziókhoz bármikor vissza tudunk térni.
* A Git snapshotokat készít az egész repo állapotáról.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Szempontok a git fejlesztésekor

A

● egyszerű legyen
● gyors legyen
● ne a lineáris fejlesztést támogassa
● nagyon nagy projektekhez is legyen alkalmas.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Git Branch modellek

A

Kétféle branch létezik:
* Long running (master)
* Short lived (pl feature branchek)

Main branchek között szerepel a:
* Master, amire csak releasek kerülnek
* Develop, amin featurok és hibajavítások vannak
* Supporting branchek
* Feature branchek
* Release branchek
* Hotfix branchek

Release branchen ha van bugfix, akkor a developre is bele kell mergelni, nem csak a masterbe. Mindig vissza kell őket mergelni! Hotfix branch arra szolgál ha masteren valami hiba van és ezért gyors hibajavítás kell. Developra is mergeljük ezt.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Github flow

A

Feature toggles (felhasználó elől elrejtjük a még nem kész featuret).
Napi routine:
● git fetch (lehúzzuk a változtatásokat a develop branchre hogy a legfrissebbről induljunk)
● új feature branch a developból (git checkout -b)
● git add . (változtatások stagelése)
● git commit
● git push
● merge/pull request
● tesztek futtatása (ha lefutottak mehet a merge)
● lokális feature branch törlése merge után.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Github workflow típusok

A
  1. Central repository workflow
  2. Integration manager workflow
  3. Dictator and lieutenants workflow
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Central repository workflow

A

A központi branch a Main, és az összes változtatás ide kerül be, nem kell több branch.
Ha kész vagyunk a feature-el, pusholjuk a main-re lokálból.
Ha conflictunk van akkor a git vissza fogja utasítani a push-t és kezelnünk kell. Force push esetén átírja a jelenlegi remote branchet.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Integration manager workflow

A

Van egy blessed repository, amibe egy integration manager mergeli a developerek public repositoryjait.
A developerek privát repositoryjai a blessed repositoryból származnak le majd a változtatásokat a public repóba küldik fel.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Dictator and lieutenants workflow

A

Ez is egy több remote repositoryt tartalmazó workflow. Nagy projekteknél használják több száz kollaborátorral. Pl ilyenek a nyílt forráskódú programok (Linux).
Vannak integration managerek, akiket lieutenant-oknak hívunk. A lieutenantok behúzzák a változtatásokat a saját repójukba, onnan pedig a dictator mergeli a változtatásokat és felküldi a blessed repository-ba. A developerek repói publicok.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

kliensoldali hook-ok

A

Fetch, commit, push, pull request, issue handling, wiki.
Webhooks -> merge requestnél hívódik meg egy URL, aminél parancsok vannak meghívva, mint buildelés, tesztelés.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Fast-forward merge

A

Amikor pl a developerről leszármazott feature branchünkkel végeztünk és visszacsatoljuk a developerbe-be, de ott nem történt változás mióta leágaztunk ezért nem lesz nyoma annak, hogy bármilyen visszamergelés történt volna, csak a lineárisan az új commitok fognak látszódni. Azért nem javasolt mert elveszik a nyoma annak hogy volt merge.

2-way merge: 2 külön ágat mergel össze.
3-way merge: A fő branch a 3. és azzal mergelődik össze a 2 leszármaztatott branch.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Rebasing

A

célja a változtatások összeintegrálása 2 branchről. Itt is van fast-forward.
Visszamegy közös ősig, kitörli a historyt. Nem lesz felesleges merge commit, végeredményben nincs különbség.
Rebase egyenes code historyt eredményez, revertelni könnyű.
Hátrány, hogy elrejti a contextet, újra írja a historyt, pull requestelelni nem lehet, force push kell néha.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Merge előnye, hátránya

A

Merge előnye a nyomonkövethetőség, hátránya a history nehezen követhetősége. Távoli repoba felrakott commitot ne rebaseljünk, mert így két változtatás 2x lehet benne a historyba.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly