32
Einführung zu Git Das Nötigste für die Studienarbeit im Modul Datenkommunikation Ege Inanc

Einführung zu Git€¦ · Einführung zu Git Das Nötigste für die Studienarbeit im Modul Datenkommunikation EgeInanc

  • Upload
    others

  • View
    6

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Einführung zu Git€¦ · Einführung zu Git Das Nötigste für die Studienarbeit im Modul Datenkommunikation EgeInanc

EinführungzuGit

DasNötigstefürdieStudienarbeitimModulDatenkommunikation

Ege Inanc

Page 2: Einführung zu Git€¦ · Einführung zu Git Das Nötigste für die Studienarbeit im Modul Datenkommunikation EgeInanc

WarumisteinVersionskontrollsystemfürdieStudienarbeitnützlich?• ArbeitetmanimTeam,kannesespassieren,dasseinEntwicklerdendurcheinenanderenEntwicklerverändertenSourcecodeversehentlichüberschreibt• EinVersionskontrollsystemoderimSpeziellenGit hilft,dieszuverhindern• KonfliktedurchnebenläufigeVeränderungenimSourcecode könnenerkanntwerdenundaucheinRücksetzenaufeinenvorherigenStandistmöglich

2

Page 3: Einführung zu Git€¦ · Einführung zu Git Das Nötigste für die Studienarbeit im Modul Datenkommunikation EgeInanc

WasistGit?

• Git isteinverteiltesVersionskontrollsystemfürSoftwareprojekte(Distributes VersionControlSystem,DVCS)• JederProjektmitarbeiterlegtseineigeneslokalesRepositoryan• EinlokalesArbeitenaufdemEntwicklungsrechneristohnepermanenteVerbindungzueinemRepository-Servermöglich• EinAbgleichmitanderenRepositories istauchmöglich,Konfliktewerdenerkannt

Anm.:EinRepositoryisteineArtDatenbankfürdenSourcecode einesProjekts

3

Page 4: Einführung zu Git€¦ · Einführung zu Git Das Nötigste für die Studienarbeit im Modul Datenkommunikation EgeInanc

VerschiedeneRepositories inGit

• Local Repository• VersionsverwaltunginnerhalbdeslokalenVerzeichnisses(mittels„git init“)

• Staging Area• Temporäre,lokaleLagerungenderfestgeschriebenenÄnderungeneinesEntwicklers

• RemoteRepository• VersionsverwaltungübereinezentraleSchnittstelle,inderalleArbeitenderEntwicklerzusammengeführtwerden

4

Page 5: Einführung zu Git€¦ · Einführung zu Git Das Nötigste für die Studienarbeit im Modul Datenkommunikation EgeInanc

Zusammenhänge

5

Page 6: Einführung zu Git€¦ · Einführung zu Git Das Nötigste für die Studienarbeit im Modul Datenkommunikation EgeInanc

WarumGit ?

• RelativschnellesVerständnisdereinzelnenVorgängeistmöglich

• DasArbeitenistofflinemöglich• ImGegensatzzuandereVersionskontrollsystemen,wiez.B.SVN,benötigtmanbeiGit keine ständigeVerbindungzumRemoteRepository

• GuteDokumentation

6

Page 7: Einführung zu Git€¦ · Einführung zu Git Das Nötigste für die Studienarbeit im Modul Datenkommunikation EgeInanc

.gitignore (1)• DateieneinesProjektes,dielokaleBedeutunghabenunddahernichtversioniert werdensollen,könnenineiner.gitignore-Dateigespeichertwerden.SiewerdendannvondenGit-Befehlenignoriert• BeiTortoiseGit (spätergenauer)istdiessehreinfachgestaltet• Hierzuwirdeine.gitignore-DateiimlokalenRepoerstellt

Gitignore fürEclipse undIntelliJ:https://www.gitignore.io/api/eclipse%2Cintellij

7

Page 8: Einführung zu Git€¦ · Einführung zu Git Das Nötigste für die Studienarbeit im Modul Datenkommunikation EgeInanc

.gitignore (2)

• Unterwww.gitignore.io könntihreinegitignore-DateifürdieIDEserstellenlassen• IhrkönntbestimmteDateinameneintragenoderaberauchwildcards• Beispiel:*.log->eswerdenalle.logDateienignoriert

• MiteinemEintrag<verzeichnisname>/*werdenalleDateienimVerzeichnisignoriert• verzeichnisname gibtdenNamendesVerzeichnissean

• MitdemZeichen„#“fügtihreinenKommentarhinzu

8

Page 9: Einführung zu Git€¦ · Einführung zu Git Das Nötigste für die Studienarbeit im Modul Datenkommunikation EgeInanc

Git Bash

• ErforderlichesToolistdieGit Bash• Downloadunter:https://git-scm.com/downloads• ZurZeitinderVersion2.14.2

9

Page 10: Einführung zu Git€¦ · Einführung zu Git Das Nötigste für die Studienarbeit im Modul Datenkommunikation EgeInanc

WichtigsteBefehle

• git init /git clone• git pull(=git fetch +git merge )• git push• git commit• git status• git add• git branch

10

Page 11: Einführung zu Git€¦ · Einführung zu Git Das Nötigste für die Studienarbeit im Modul Datenkommunikation EgeInanc

Repositoryanlegen

GrundsätzlichzweiMöglichkeiten:

1. git init:EinneueslokalesRepositorywirdangelegt

2. git clone:EinbestehendesremoteRepositorywirdindaslokaleVerzeichnissystemgeklont

11

Page 12: Einführung zu Git€¦ · Einführung zu Git Das Nötigste für die Studienarbeit im Modul Datenkommunikation EgeInanc

git init

• ImSystemverzeichniswirddieBash gestartet• DerBefehl„git init“initialisierteinGrundgerüstfüreinlokalesRepo• Aufwww.github.comeinentferntesRepo anlegen• AnschließendfolgendenBefehlaufrufen:

„git remoteadd origin https://github.com/username/reponame.git“mit• username =eigenerBenutzername• reponame =NamedesentferntenRepositories

• Erstenpushdurchführenmit„git push–uorigin master“

12¹Anleitungnachwww.github.com

Page 13: Einführung zu Git€¦ · Einführung zu Git Das Nötigste für die Studienarbeit im Modul Datenkommunikation EgeInanc

git clone

• MitHilfedesBefehls„git clone“erstelltdannjedesweitereTeammitgliedeineArbeitskopieundeinlokalesRepo ausdementfernteRepo aufwww.github.com• „git clone https://github.com/pfad-zum-repo/reponame.git“

mit• reponame =NamedesentferntenRepositories

• Z.B.„git clone https://github.com/projekt/dako.git“

13

Page 14: Einführung zu Git€¦ · Einführung zu Git Das Nötigste für die Studienarbeit im Modul Datenkommunikation EgeInanc

WasisteinBranch (1)?

• MiteinemBranch (Zweig)kanndieEntwicklungfortgesetztwerden,ohnedieaktuelleVersionzuverändern• JedesProjekthatinitialeinenMaster-Branch• WährendderEntwicklungwerdenweitereBranches angelegt• VeränderungendesSourcecodes inBranches könnenwiederzurückgeführtwerden.Dasnenntman„Merging“• Beispiel:

14

Page 15: Einführung zu Git€¦ · Einführung zu Git Das Nötigste für die Studienarbeit im Modul Datenkommunikation EgeInanc

WasisteinBranch (2)?

• InBranches entwickeltmanalsoProjekterweiterungohnedenaktuellenMaster-Branch zuverändern• Beispielsweise:• SimpleChat wirdimMaster-Branch verwaltet• FürdenAdvancedChat wirdeinneuerBranch angelegt

• SomitwirdderSimpleChat nieberührt,dieTeilaufgabe2wirdimAdvancedChat-Branchentwickelt.• Achtung:Manmussimmerprüfen,aufwelchenBranchmangeradearbeitet!->DiessiehtmanindenKlammern

15

Page 16: Einführung zu Git€¦ · Einführung zu Git Das Nötigste für die Studienarbeit im Modul Datenkommunikation EgeInanc

Branching amChat-Beispiel(1)• AufBasisdesSimpleChats wirdeinneuerBrancherstellt• „git checkout –bAdvancedChat“

• ErstelleneinesweiterenBranches aufBasisdesAdvancedChat,wenndieEntwicklungaufgeteiltwird(z.B.Client- undServerentwicklung),z.B.:• „git checkout –bAdvancedChatServer“• „git checkout -bAdvancedChatClient“

• HierarbeiteteinEntwickleramServeraufeinemeigenenBranchundeinweitereraufeinemeigenenBranchfürdenClient• DieBasisdesSimpleChat istsomitzujederZeitlauffähig• WechselninnerhalbderBranches dannmit• „git checkout <branchname>“

16

Page 17: Einführung zu Git€¦ · Einführung zu Git Das Nötigste für die Studienarbeit im Modul Datenkommunikation EgeInanc

Branching amChat-Beispiel(2)

17

• AmEndedesProjektistessinnvollzurÜbungdanndieBranchesmiteinanderzumergen (spätermehr)

• UnteranderemauchumdieComboboxderGUIzuerweitern

Page 18: Einführung zu Git€¦ · Einführung zu Git Das Nötigste für die Studienarbeit im Modul Datenkommunikation EgeInanc

git pull(=git fetch +git merge )

• Bevormananfängt,weiterzuarbeiten,solltederaktuelleStandausdemRepositorybesorgtwerden,umKonfliktemöglichstzuvermeiden• Mit„git pull“werdendieÄnderungenvomentferntenRepo indenlokalenbranch geladenundgemerged

• Merging istdasZusammenführenvonneuenCodeteilenindenlokalenStand

18

Page 19: Einführung zu Git€¦ · Einführung zu Git Das Nötigste für die Studienarbeit im Modul Datenkommunikation EgeInanc

git status

• DieserBefehlzeigtalleÄnderungenimlokalenRepo imGegensatzzumRemoteRepo an

• Mitgit add <dateiname>(odergit add .füralleFiles)werdendiesefürdenCommitvorbereitet

19

Page 20: Einführung zu Git€¦ · Einführung zu Git Das Nötigste für die Studienarbeit im Modul Datenkommunikation EgeInanc

git commit

• MitdemKommandogit commit –m„<commit message>“schreibtIhrEureÄnderungenfest• commit message =beliebiger,sinnvollerKommentar,umdenEntwicklungsstandzuerläutern.

• Dannistallesfürden„push“indasentfernteRepo vorbereiten

20

Page 21: Einführung zu Git€¦ · Einführung zu Git Das Nötigste für die Studienarbeit im Modul Datenkommunikation EgeInanc

git push

• NachdemCommitwirdderBefehl„git push“ausgeführt,umdieÄnderungenfürdieanderenEntwicklerverfügbarzumachen

• DiesekönnensichdanndieseÄnderungenmit„git pull“aufihrlokalesRepo kopieren

21

Page 22: Einführung zu Git€¦ · Einführung zu Git Das Nötigste für die Studienarbeit im Modul Datenkommunikation EgeInanc

AllgemeinerAblauf

22

Page 23: Einführung zu Git€¦ · Einführung zu Git Das Nötigste für die Studienarbeit im Modul Datenkommunikation EgeInanc

git branch

• EinBranchisteinweitererSourccode-ZweigimProjekt• WirdeinRepo erzeugtwirdderMaster-Branch erstellt• Mit„git branch <branchname>“wirdeinneuerlokalerBrancherstellt• „git checkout <branchname>“wechseltindenneuenBranch• „git merge <branchname>“verschmelztdieInhaltederBranches• „git branch“listetallelokalenBranches auf• „git branch –a“listetallelokalenundremoteBranches auf• „git checkout –b<branchname>“erstellteinenneuenBranchundwechseltsofortindiesen

23

Page 24: Einführung zu Git€¦ · Einführung zu Git Das Nötigste für die Studienarbeit im Modul Datenkommunikation EgeInanc

Branches mergen

• Beispiel:• IhrbefindeteuchimBranch „develop“habthierÄnderungengetätigt.• IhrwolltdieseÄnderungenindenMaster-Branch übernehmen:

• 1.git checkout master //WechselindenMaster-Branch

• 2.git merge develop //ÜberführeÄnderungenvon„develop“inden//Master-Branch

24

Page 25: Einführung zu Git€¦ · Einführung zu Git Das Nötigste für die Studienarbeit im Modul Datenkommunikation EgeInanc

Konflikte• Konflikteentstehen,wennindergleichenDateidieselbeZeilegeändertwird• InderRegelerscheintbeimPush-VersuchdannfolgendeNachrichtinderBash

• Mit„git pull“wirddannautomatischgemerged,schlägtdiesfehl,mussvonHandeineKonfliktbereinigungdurchgeführtwerden

25

Page 26: Einführung zu Git€¦ · Einführung zu Git Das Nötigste für die Studienarbeit im Modul Datenkommunikation EgeInanc

Merging

• NachdemderBefehl„git pull“ausgeführtwurdewirdderMerge-Modusgestartet.AlsBranchname wirddann„MERGING|master“ausgegeben• DiesenModuskannmanmit

„git merge -- abort“verlassen

• EsgibtvieleverschiedeneMerge ToolsdiesekannmanmitdemBefehl• „git mergetool -- tool-help“ausgebenlassen

26

Page 27: Einführung zu Git€¦ · Einführung zu Git Das Nötigste für die Studienarbeit im Modul Datenkommunikation EgeInanc

Merging Tools

27

Page 28: Einführung zu Git€¦ · Einführung zu Git Das Nötigste für die Studienarbeit im Modul Datenkommunikation EgeInanc

Tortoisemerge

28

• „git mergetool -- tool=tortoisemerge“

• BeidiesemToolwerdendieentfernteunddielokaleVersionangezeigt• UntenfindetIhrdie„gemergte“Version

Page 29: Einführung zu Git€¦ · Einführung zu Git Das Nötigste für die Studienarbeit im Modul Datenkommunikation EgeInanc

Ergebnis(beiTortoise)

• Diegemergte DateiwirdmitdemgleichenNamenneuerstellt• DieinKonfliktstehendeDateiwirdmit<Dateiname>.orig imRepogespeichert• Mit„git status“kannmansichdannwiederdieDateienansehen

• SchließlichwirddanndiegemergteDateicommitted undindasRepo gepusht

29

Page 30: Einführung zu Git€¦ · Einführung zu Git Das Nötigste für die Studienarbeit im Modul Datenkommunikation EgeInanc

NützlicheLinks

• http://ohshitgit.com/• https://git-scm.com/• https://www.gitignore.io/• http://rogerdudler.github.io/git-guide/• https://www.git-tower.com/blog/git-cheat-sheet/

30

Page 31: Einführung zu Git€¦ · Einführung zu Git Das Nötigste für die Studienarbeit im Modul Datenkommunikation EgeInanc

VielenDankfüreureAufmerksamkeit

31

NochFragen?

Page 32: Einführung zu Git€¦ · Einführung zu Git Das Nötigste für die Studienarbeit im Modul Datenkommunikation EgeInanc

Online:• https://entwickler.de/online/development/git-subversion-svn-versionskontrollsystem-579792227.html• https://www.git-tower.com/learn/git/ebook/en/command-line/advanced-topics/merge-conflicts• https://de.slideshare.net/RandalSchwartz/introduction-to-git-11451326/5-Why_git_Essential_to_Linux

Offline:• DailyGit:WieeinkompetenterKollegeIhnenGit erklärenwürde,MartinDilger(verfügbarinderBibliothekderHMunter00/ST 230 D576)

32