"Idag ska jag berätta om de två mest populära versionskontrollprogrammen: SVN och Git."

"SVN fungerar ungefär som jag beskrev i förra lektionen. Git är lite mer komplicerat, och jag planerar att diskutera det mer i detalj."

"Kan du ge mig länkar till dokumentationen för SVN och Git?"

"Självklart, bara en sekund."

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

https://githowto.com  (detta är helt enkelt ett mästerverk)

"Så, Git ."

"Det är lite mer komplicerat än SVN.  Med Git har varje användare sitt eget lokala arkiv utöver serverförrådet. "

"Så vart förbinder du dig?"

"Användare förbinder sig alltid till sitt lokala arkiv."

"Men hur är det med serverförrådet?"

"För att synkronisera de lokala och serverförråden finns det speciella Pull- och Push-kommandon .

"Det finns en anledning till detta. Ibland behöver en programmerare göra mycket arbete på egen hand, vilket kan innebära flera hundra commits innan det kan läggas till i det delade arkivet."

"För att göra detta i SVN måste du starta en separat gren och sedan slå samman den med stammen."

"Med Git förbinder du dig helt enkelt alltid till det lokala arkivet och skickar sedan alla ändringar som en batch till det centrala arkivet på servern när du är klar."

"Den här metoden kan verka lite överdriven när du bara skriver lite kod. Men när dina uppgifter är så stora att de sträcker sig över veckor, då förstår du att du inte bara kan skriva det hela tiden utan att binda dig."

"Varför kan du inte bara arbeta i två veckor och sedan överföra dina ändringar till servern en gång?"

"Tja, ett versionskontrollprogram erbjuder många bekvämligheter."

"Föreställ dig att du förbinder dig varje dag, och den 10:e dagen upptäcker du att ändringarna du gjort under de senaste två dagarna inte kommer att fungera som planerat. Och du vill återgå till koden du hade den 8:e dagen och närma dig uppgiften annorlunda."

"Du återställer helt enkelt de ändringar som gjorts i det lokala förvaret under de senaste två dagarna och återgår till önskat tillstånd. Detta är känt som en återställningsoperation ."

"Säger du att du kan göra det?"

"Japp. Dessutom, eftersom commit-historiken är lagrad, kan du ta reda på när och varför något begicks, och av vem, de relevanta funktionerna/buggarna och vilka tio filer som modifierades samtidigt som en del av detta arbete."

"Anta att någons buggfix bryter någon annans kod. Du kan bara rulla tillbaka ( rulla tillbaka ) koden och fortsätta som om ändringen aldrig skett."

"OK, det är coolt. Jag är övertygad. Kan du visa mig ett par exempel som illustrerar hur allt detta fungerar?"

"Säker."

"Så här klonar du det centrala förvaret till din lokala dator:"

Commits och filialer - 1

"Så, Checkout-operationen behövs inte längre."

"Japp. Och här är exempel på push -operationer:"

Commits och filialer - 2

"Och Pull- operationer:

Åtaganden och förgreningar - 3

"Ah. Det är mer eller mindre vettigt."

"Förresten, det finns en cool tjänst som heter GitHub."

"Alla programmerare kan registrera sig där och skapa sina egna Git-förråd. Jag föreslår att du bekantar dig mer med det."

"Här är några användbara länkar:"

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

"Observera att det finns ganska många Git-klienter."

"Först finns det   GitBash , som låter dig ange textkommandon."

"Sedan finns det TortoiseGit , som är ett bra program inbyggt i Windows Utforskaren. Det låter dig arbeta med filer i ett Git-förråd direkt i Utforskaren."

"IntelliJ IDEA stöder Git och låter dig utföra alla möjliga komplexa kommandon med bara ett par klick direkt från miljön."

"Så, vilken ska jag lära mig?"

"Jag rekommenderar att du lär känna dem alla."

"Du klarar din intervju och kommer till jobbet. Du får en länk till Git, en inloggning och ett lösenord — och det är allt. Sedan är du på egen hand."

"Vad menar du, "på egen hand"?

"Jag menar att du ställer in Git själv, hämtar en kopia av förvaret själv,..."

"Och sedan måste du bygga och försöka driva projektet."

"Bygginstruktionerna kommer också troligen att finnas i Git-förvaret, tillsammans med projektdokumentationen."

"Din teamledare kommer fram till dig på kvällen och säger, "  Vad har du kommit på hittills?" "

"Och du kommer att säga," Jag försöker sätta upp Git här, men har inte haft någon framgång än. " Du kommer inte att sparka mig, eller hur?" "

"Eller medan det fortfarande är mitt på dagen kan du gå till teamledaren och säga:  "Jag installerade Git, drog ut projektet och bläddrade igenom dokumentationen, men det finns hundratals filer och jag har inte fixat allt ännu. Var är de nuvarande bygginstruktionerna?'» "

"Känner du skillnaden?"

"Ja. I det andra fallet är jag en superrock-star programmerare, men i det första är jag en robo-doofus som inte ens vet hur man drar ett projekt från Git. Med andra ord, jag skruvade upp innan jag ens fick börja programmera. Jag antar att de efter det inte ens skulle låta mig skriva kod."

"Se, du svarade på dina egna frågor. Så studera och ta reda på det. Ingen kommer att göra det åt dig."

"Tänker du inte hjälpa mig?"

"Jag har redan hjälpt till. Vi lär ut Java här, ifall du har glömt det. För allt annat är du ensam. Eller är ditt huvud bara för att dricka?"

"Okej, jag förstår. Tack, Bilaabo!"