Newer
Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
== Kildekodehåndtering
* lagring av kode
* sporing av endringer
* versionering
* distribusjon
[.grid-left-right-50-50]
== `git`
[.smaller-60]
[.area-left]
* sporing og deling av kodeendringer i såkalte _repo_ (repository)
* både sentrale og lokale repo har all endringshistorikk
* initiell kopi hentes ved å _kloning_ (clone)
* endringer (i filer) registreres i _commits_
* commits deles med andre ved å _dytte_ (push) til en server
* andre kan da _dra_ (pull) endringene inn i lokalt repo
[.area-right]
image::../images/git-local-remote-repo.png[]
[.grid-left-right-50-50]
== 4 repo-"kopier"
[.smaller-60]
[.area-left]
* originalen (_origin_), hentet fra server (`pull`)
* arbeidsområdet (_working directory_), lokale filer som kan være endret
* indeksen (_staging area_ eller _index_), endringer du har lagt til med (`add`)
* lokalt repo, endringene du har commitet (`commit`)
[.area-right]
image::../images/git-repo-copies.png[]
== repo-kommandoer
image::../images/git-repo-copies.png[width="400px"]
image::../images/git-repo-commands.png[width="500px"]
== Typisk sekvens
[.smaller-80]
* `git pull` (eller `clone` første gang) - henter ned endringer fra serveren
* gjør egne endringer
* `git status` - viser hva som er endret
* `git add <fil eller mappe>` - legger endringer til fremtidig commit
* `git commit -m <melding, m/oppgavenummer>` - registrerer all endringene (lagt til med `add`)
* `git pull` - henter andres endringer, i tilfelle konflikt
* `git push` - deler endringer med andre via serveren
== Forgreining (branching)
[.smaller-60]
[.left-70]
* greiner (branches)
** sporer egne utviklingstråder
** gjør jobbing i parallell ryddigere
* sammenslåing (merging)
** en (hoved)grein slås gjerne sammen med en annen, når den andre er ferdig (nok)
** etter sammenslåing, så deles gjerne resultatet med andre
** andre henter så ned for å være oppdatert
[.right]
image::../images/git-branching.png[width="200px"]
== Sekvens m/forgreining
[.smaller-80]
* `git pull` - henter ned endringer fra serveren
* `git checkout -b <navn på (ny) grein>` - lager ny grein, med utgangspunkt i den du jobber med
* gjør egne endringer
* `git add ...` og `git commit ...` - registrerer all endringene
* `git checkout master` - bytter til hovedgrein
* `git merge <navn på grein>` - slår annen grein (den nye) sammen med denne (hovedgreina)
* ...
== Eclipse-støtte for git
[.smaller-60]
* Egne Eclipse-tillegg - JGit (git-impl) og EGit (UI)
* Git Repositories-panel - oversikt over repo
** klone repo fra server eller registrere lokalt repo
** utføre `pull` og `push`
** utføre `checkout` inkl. lage ny grein
** ...
image::../images/git-repositories-view.png[height="200px"]
== Eclipse-støtte forts.
[.smaller-60]
* Git Staging - statusoversikt
** filer i arbeidsområdet som er endret
** filene i indeksen
** legge til (`add`) eller fjerne (`remove`) fra indeksen
image::../images/git-staging-view.png[width="800px"]
== Endringsforespørsler
[.smaller-60]
* en `pull`/`merge`-forespørsel (request) brukes for mer formell godkjenning av endringer
** Pull Request er github-termen, mens Merge Request brukes i gitlab
* brukes ofte for å inkludere endringer utenfra, f.eks.
** utviklere utenfor kjerne-teamet
** brukere av åpen kildekode som har fikset feil
* forenkler administrasjon av åpne prosjekter
== PR/MR-prosedyre
[.smaller-60]
* (utenforstående oppretter kopi på egen server)
* lager en grein for endringene og utfører dem lokalt
* i stedet for å slå sammen med egen hovedgrein
** `push` grein til egen server
** lag en `pull`/`merge`-forespørsel (PR/MR), som (potensielt) kan inkluderes i hovedgreina
** UI for dette finnes på github/i gitlab
** forespørselen får en egen dialog/diskusjonstråd
** en utvikler med rettigheter kan så godkjenne evt. avslå forespørsel