"I dag vil jeg fortælle dig om de to mest populære versionskontrolprogrammer: SVN og Git."

"SVN fungerer omtrent som jeg beskrev i sidste lektion. Git er lidt mere kompliceret, og jeg planlægger at diskutere det mere detaljeret."

"Kan du give mig links til dokumentationen for SVN og Git?"

"Selvfølgelig lige et sekund."

http://svnbook.red-bean.com/en/1.7/svn-book.html

https://githowto.com  (dette er simpelthen et mesterværk)

"Så, Git ."

"Det er lidt mere kompliceret end SVN.  Med Git har hver bruger sit eget lokale lager ud over serverlageret. "

"Så hvor forpligter du dig til?"

"Brugere forpligter sig altid til deres lokale lager."

"Men hvad med serverlageret?"

"For at synkronisere de lokale og serverlagre er der specielle Pull- og Push-kommandoer .

"Der er en grund til dette. Nogle gange skal en programmør gøre en masse arbejde på egen hånd, hvilket kan involvere flere hundrede commits, før det kan føjes til det delte lager."

"For at gøre dette i SVN skal du starte en separat gren og derefter flette den sammen med stammen."

"Med Git forpligter du dig simpelthen altid til det lokale lager, og sender derefter alle ændringerne som en batch til det centrale lager på serveren, når du er færdig."

"Denne metode kan virke lidt overdreven, når du kun skriver lidt kode. Men når dine opgaver er så store, at de strækker sig over uger, så forstår du, at du ikke bare kan skrive den hele tiden uden at forpligte dig."

"Hvorfor kan du ikke bare arbejde i to uger og derefter overføre dine ændringer til serveren én gang?"

"Nå, et versionskontrolprogram tilbyder en masse bekvemmeligheder."

"Forestil dig, at du forpligter dig hver dag, og på den 10. dag opdager du, at de ændringer, du har lavet i løbet af de sidste to dage, ikke fungerer som planlagt. Og du vil vende tilbage til den kode, du havde på den 8. dag, og gå til opgaven anderledes."

"Du ruller simpelthen de ændringer, der er foretaget i det lokale lager i de sidste to dage tilbage og vender tilbage til den ønskede tilstand. Dette er kendt som en rollback -operation."

"Siger du mig, at du kan gøre det?"

"Jep. Derudover, fordi commit-historikken er gemt, kan du finde ud af, hvornår og hvorfor noget blev begået, og af hvem, de relevante funktioner/bugs, og hvilke ti filer der samtidigt blev ændret som en del af dette arbejde."

"Antag, at en andens fejlrettelse bryder en andens kode. Du kan bare rulle tilbage ( rulle tilbage ) koden og fortsætte, som om ændringen aldrig skete."

"OK, det er fedt. Jeg er overbevist. Kan du vise mig et par eksempler, der illustrerer, hvordan alt dette fungerer?"

"Jo da."

"Sådan kloner du det centrale lager til din lokale computer:"

Forpligtelser og filialer - 1

"Så kassen er ikke længere nødvendig."

"Jep. Og her er eksempler på push- operationer:"

Forpligtelser og forgreninger - 2

"Og Pull- operationer:

Forpligtelser og forgreninger - 3

"Ah. Det giver mere eller mindre mening."

"Der er i øvrigt en fed tjeneste, der hedder GitHub."

"Enhver programmør kan registrere sig der og oprette deres egne Git-depoter. Jeg foreslår, at du bliver mere fortrolig med det."

"Her er et par nyttige links:"

https://githowto.com

https://git-scm.com/book/en/v2/Getting-Started-Installing-Git

https://articles.assembla.com/using-git/getting-started/set-up-git-on-windows-with-tortoisegit

"Bemærk, at der er en del Git-klienter."

"For det første er der   GitBash , som lader dig indtaste tekstkommandoer."

"Så er der TortoiseGit , som er et godt program indbygget i Windows Stifinder. Det lader dig arbejde med filer i et Git-lager direkte i Stifinder."

"IntelliJ IDEA understøtter Git og lader dig udføre alle mulige komplekse kommandoer med blot et par klik direkte fra miljøet."

"Så hvilken en skal jeg lære?"

"Jeg anbefaler, at du lærer dem alle at kende."

"Du vil bestå dit interview og ankomme på arbejde. Du får et link til Git, et login og adgangskode - og det er det. Så er du alene."

"Hvad mener du, "på egen hånd"?

"Jeg mener, at du selv opsætter Git, trækker en kopi af depotet selv,..."

"Og så bliver du nødt til at bygge og prøve at køre projektet."

"Opbygningsinstruktionerne vil højst sandsynligt også være i Git-depotet sammen med projektdokumentationen."

"Din teamleder vil komme hen til dig om aftenen og sige,  "Nå, hvad har du fundet ud af indtil videre?" "

"Og du vil sige," Jeg forsøger at sætte Git op her, men har ikke haft nogen succes endnu. "Du vil ikke fyre mig, vel?" "

"Eller mens det stadig er middag, kan du gå til teamlederen og sige:  «Jeg installerede Git, trak projektet og gennemgik dokumentationen, men der er hundredvis af filer, og jeg har ikke ordnet alt endnu. Hvor er den aktuelle byggevejledning?'» "

"Kan du mærke forskel?"

"Ja. I det andet tilfælde er jeg en super-rockstjerne-programmør, men i det første er jeg en robo-doofus, der ikke engang ved, hvordan man trækker et projekt fra Git. Med andre ord, jeg skruede op, før jeg overhovedet kom i gang med at programmere. Jeg formoder, at efter det ville de ikke engang lade mig skrive kode."

"Se, du svarede på dine egne spørgsmål. Så studer og find ud af det. Ingen vil gøre det for dig."

"Vil du ikke hjælpe mig?"

"Jeg har allerede hjulpet. Vi underviser i Java her, hvis du har glemt det. Alt andet er du alene. Eller er dit hoved kun til at drikke?"

"Okay, jeg forstår det. Tak, Bilaabo!"