Het is ons allemaal overkomen: we veranderen iets in onze code en plotseling lijkt alles "verbroken" te zijn. Dit is wanneer versiebeheer een zegen is - als u weet hoe u het moet gebruiken. In deze zelfstudie leren we Git gebruiken vanaf de opdrachtregel.
Xcode en andere moderne IDE's hebben basisopties voor Git ingebouwd in hun grafische gebruikersinterface, maar je krijgt alleen controle op hoog niveau van je repo (Git-repository) via de opdrachtregel. Als u geavanceerde codering of Git-beheer uitvoert, is het belangrijk om vertrouwd te zijn met de opdrachtregel. Als u nog nooit de opdrachtregel hebt gebruikt, wilt u misschien mijn andere zelfstudie over het onderwerp bekijken:
Voordat we aan de slag gaan, moeten we bekijken wat precies Version Control is. EEN Versiecontrolesysteem is een softwareoplossing waarmee u eenvoudig revisies van uw code en andere gegevens kunt opslaan, zodat u terug kunt gaan naar eerdere versies, wijzigingen kunt bekijken die zijn aangebracht en updates kunt delen met bijdragers.
Er zijn veel voordelen en use cases voor versiebeheer. Bijvoorbeeld door de wijzigingen te bekijken ("begaat") voor uw project, kunt u identificeren wie een bepaald stukje code heeft geschreven en waarom.U kunt ook alle wijzigingen ongedaan maken die bleken te zijn of de functionaliteit te breken.
Het meest gebruikte versiebeheersysteem van vandaag is Git, dus dat is degene die we in deze post zullen bekijken. Houd er echter rekening mee dat er ook andere veelgebruikte systemen zijn, bijvoorbeeld SVN en Mercurial.
Wanneer u versiebeheer gebruikt, maakt u een bewaarplaats, of repo, en het is het meest gebruikelijk om deze repo op a te hosten Repository Management Service. Voor deze tutorial zullen we onze repo nergens hosten, zodat u zich kunt concentreren op het feitelijk gebruiken van versiebeheer. Als u wilt, kunt u echter deze repository-beheerservices lezen en moet u deze kennis kunnen gebruiken als u dat wilt.
Een paar voorbeelden hiervan zijn GitHub, Bitbucket, GitLab en Coding, en ze worden veel gebruikt door ontwikkelaars over de hele wereld. Ik en vele anderen gebruiken GitHub omdat het een groot aantal open-sourceprojecten herbergt. GitHub-repos zijn standaard openbaar, maar u kunt privé-repo's maken voor een maandelijks bedrag.
Om te beginnen, moet u een nieuwe applicatie maken in Xcode. Voor deze app kun je elke gewenste sjabloon gebruiken en als je een huidige app hebt met een Git-repository, kun je deze ook gebruiken voor deze zelfstudie.
Hier is hoe de IDE er moet uitzien voordat u eindelijk uw project maakt (wanneer u de locatie moet bepalen om het project op te slaan):
Zorg ervoor dat de doos die zegt Maak Git repository op mijn Mac wordt gecontroleerd, omdat dit ervoor zorgt dat uw project intern de repo heeft. Later, als u ervoor kiest een repository-beheersysteem te gebruiken, kunt u dit doen Duwen al deze code, en elke plegen je hebt ooit gemaakt zal verschijnen.
Om naar de opdrachtregel te gaan, moet je de terminal openen. U kunt dit op twee manieren doen. Je kunt openen Lanceerplatform, en daar kun je het vinden Terminal pictogram in de anders map op de eerste pagina van Launchpad. Of je kunt slaan Command-Space op je toetsenbord en zoek naar Terminal in Spotlight.
Zodra u de terminal opent, ziet u ongeveer het volgende.
Dit wordt de "opdrachtprompt" genoemd; u ziet de huidige map, uw gebruikersnaam gevolgd door a $
.
Okee! U bent nu klaar om te leren hoe u versiebeheer op de terminal gebruikt.
Hier zijn enkele van de basisopdrachten waarover ik schreef in mijn zelfstudie over hoe u aan de slag kunt met Terminal. U moet deze weten om de terminal effectief te kunnen gebruiken.
helpen
-zoals de naam doet vermoeden, kunt u deze opdracht in de terminal typen om een lijst met verschillende opdrachten te krijgen.man
-vergelijkbaar met het vorige commando, deze opdracht vertelt je precies wat een commando doet (en geeft je volledige documentatie) zonder dat je daarvoor op Google hoeft te zoeken.Bestandsbeheer
ls
-geeft een overzicht van alle inhoud in de huidige map. Deze opdracht is handig als u de Finder niet wilt gebruiken om door bestanden te bladeren - u kunt ze eenvoudig weergeven met deze opdracht in uw terminal.CD
-deze opdracht wordt gebruikt om mappen te wijzigen. Als je schrijft CD
alleen, u verlaat de huidige map. Na gebruik ls
(om de mappen te zien), kunt u de naam schrijven van de map die u wilt invoeren.defaults
-deze opdracht wordt gebruikt om standaard systeeminstellingen te wijzigen, waarvan sommige niet kunnen worden gewijzigd zonder de terminal te gebruiken.caffeinate
-zoals de naam al doet vermoeden, wordt dit commando gebruikt om te voorkomen dat je Mac dimt, uitschakelt of slaapt. Om dit te beëindigen, hoeft u alleen maar op te drukken Besturing C.vim
-dit is een van mijn favorieten. U kunt tekstbestanden bewerken met de standaard TextEdit (of een op een GUI gebaseerde editor), maar vim
is in feite een teksteditor met opdrachtregel, dat wil zeggen, het werkt volledig binnen de terminal.ping
-Met deze opdracht kunt u de reactietijd van de server van een opgegeven URL of IP-adres controleren. Dit is misschien niet handig voor elke ontwikkelaar, maar het is leuk om te weten.sudo
-een manier om de gebruikersrechten te overschrijven en een superuser van de computer te worden. U wordt gevraagd om een beheerderswachtwoord wanneer u het gebruikt.Nu je wat basisterminocommando's hebt gezien, laten we eens kijken naar de verschillende dingen die je met Git kunt doen. Ik zal ze niet allemaal behandelen, maar ik zal je leren over de belangrijkste die je zult gebruiken in de dagelijkse ontwikkeling. Als u ooit meer informatie nodig heeft, kunt u gewoon hardlopen help
in uw terminal voor details, en als dat niet genoeg is, kunt u voor volledige documentatie uitvoeren man git
om de handleidingpagina te krijgen.
Dit is hoe de helppagina's eruitzien:
git clone remote-repo-link
-als u een repository wilt klonen vanuit een repository-beheerservice, kunt u deze opdracht samen met de URL gebruiken om een lokale kopie op uw computer te krijgen.git init
-als u een nieuwe repository maakt vanuit een bestaande map, kunt u deze opdracht gebruiken. Het initialiseert de huidige map als een nieuwe repo. Meestal zou u dit doen wanneer u voor de eerste keer een project aanmaakt.git status
-vertelt u welke bestanden in uw werkmap zijn gewijzigd. Als je bestanden hebt gewijzigd, is het misschien tijd om een commit te maken!git commit -am "useful commit message"
-wanneer u enkele wijzigingen in uw project hebt aangebracht (bijvoorbeeld wanneer u een eenvoudige functie hebt voltooid of een bugfix hebt gemaakt), moet u uw wijziging toewijzen. Zorg voor een beknopte en duidelijke commit-boodschap, omdat dit andere ontwikkelaars helpt te begrijpen wat u hebt gedaan en waarom.git voeg filename toe
of git add --all
-als je een nieuw bestand aan je repo toevoegt, moet je het aan de repo toevoegen voordat je het commit. Gebruik de toevoegen
commando. git branch branch-name?
-met deze opdracht kunt u de huidige branches vermelden of een nieuwe maken.git samenvoegen branch-name
-voeg de huidige tak samen met de aangegeven tak. Hiermee wordt de code in de huidige branch gecombineerd met de genoemde branch.git uitchecken branch-name
-overschakelen naar de aangegeven tak. Dit zal eenvoudig de huidige tak opzij zetten en de andere tak actief maken.git push
-werkt de repository bij in het repository-beheersysteem. Nadat u klaar bent met het aanbrengen van wijzigingen en er zeker van bent dat uw code goed werkt, kunt u uw code zo pushen dat andere leden de code kunnen zien en eraan kunnen trekken.git pull
-werkt uw lokale werkkopie van de repo bij met de nieuwste updates die naar het repositorybeheersysteem zijn gepusht. Het is een goed idee om dit te doen voordat u wijzigingen aanbrengt als u in een team werkt.Dit zijn enkele van de belangrijkste opdrachten die u in versiebeheer zult gebruiken om aan de slag te gaan, maar voordat we deze tutorial beëindigen, laten we een paar hiervan uitgebreid bekijken met het Xcode-project dat we eerder hebben gemaakt.
Laten we nu een paar voorbeelden bekijken van het gebruik van command-line Git met het Xcode-project dat we eerder in deze tutorial hebben gemaakt. Merk op dat we de bovenstaande terminalopdrachten zullen gebruiken, dus zorg ervoor dat je ernaar blijft verwijzen of onthoud ze.
Voordat we beginnen, moet je naar de projectdirectory navigeren met de bovenstaande commando's (hint: gebruik de CD
en ls
commando's). Als je er eenmaal bent, ren dan ls
en zorg ervoor dat je zoiets hebt als dit:
Ta-da! Nu bevindt u zich in uw projectdirectory en bent u klaar om alles te doen wat u nodig hebt voor uw project. Volg gewoon ons terwijl we ons committeren en vertakken.
Het vastleggen van uw code is wat u het vaakst zult doen tijdens het programmeren. Zodra u een werkende wijziging aanbrengt, kunt u het beste samen met gedetailleerde opmerkingen vastleggen.
Maak om te beginnen een wijziging in het Xcode-project. Voor de mijne voeg ik de volgende regel dummy-code toe in mijn viewDidLoad ()
methode:
laat foobar = "foo"
Nadat u klaar bent met het toevoegen (of aftrekken) van een of twee regels code, bent u klaar om de status van uw project te controleren. Hiertoe plakt u de volgende opdracht (minus de $
prompt) in uw Terminal-venster:
$ git-status
Je ziet zoiets als dit:
Het bestand dat je hebt gewijzigd, is rood gemarkeerd, wat aangeeft dat het niet-gecommiteerde wijzigingen bevat.
Als u alleen bepaalde bestanden wilt vastleggen, kunt u dit doen via een "staging-gebied" waar alleen die bestanden worden vastgelegd. Om alle gewijzigde bestanden toe te voegen aan het "verzamelgebied" hoeft u alleen de volgende regel code uit te voeren:
$ git add -A
De -EEN
vlag die u ziet, betekent dat alle bestanden die u hebt gewijzigd, worden toegevoegd (-EEN
is voor iedereen, en je kunt ook schrijven git add --all
).
Om te zien dat uw bestanden gereed zijn om te binden, voert u eenvoudigweg het volgende nogmaals uit:
$ git-status
Je ziet zoiets als dit:
Zien? Hetzelfde rode bestand is nu groen, wat aangeeft dat je het met succes hebt voorbereid om te committen.
Als laatste, om eindelijk uw code te committen, volstaat het om de volgende opdracht in uw terminal uit te voeren en tussen de aanhalingstekens een bericht in te voegen.
$ git commit -m "Mijn allereerste commit."
De -m
vlag vertelt de Terminal dat u een bericht aan uw bestand zult toevoegen, en het is vrij belangrijk om duidelijk te zijn met dit bericht. Deze berichten zijn cruciaal voor het bijhouden van de wijzigingen in uw project.
Nu, je hebt je allereerste commit gemaakt! U bent op de goede weg om uw code eenvoudiger en veiliger te maken.
Het tweede belangrijkste wat u als ontwikkelaar zult doen is filialen maken, samenvoegen en gebruiken om uw code te sorteren en functies te isoleren voordat u ze naar klanten implementeert.
Standaard bevindt u zich in wat wij de 'hoofd'-branche noemen. Dat is de hoofdtak waar uiteindelijk alles in terecht moet komen. Best practice, vooral werken met een team, is om te werken aan nieuwe belangrijke functies in hun eigen filialen, die weer samengevoegd worden tot master wanneer ze voltooid zijn..
Om te oefenen met takken werken, laten we een nieuwe tak maken. Voer hiervoor de volgende opdracht uit:
$ git branch my-first-branch
Je kunt de branch een naam geven die je maar wilt.
Om de nieuwe branch te zien, kunt u typen:
$ git branch
Wanneer u dat commando uitvoert, ziet u zoiets als dit:
Merk op dat je twee takken kunt zien: meester
en my-first-tak
(of hoe je je branch noemde). Bovendien ziet u dat er een sterretje staat bij de meester
branch, wat aangeeft dat u zich momenteel in dat filiaal bevindt.
Als u ooit naar een ander bestaand filiaal moet overschakelen, moet u dit doen uitchecken
die tak. Wanneer u dit doet, verlaat u de huidige branch en blijft al zijn code intact (samen met uw lokale wijzigingen), maar uw werkdirectory wordt gevuld met de code van de branch die u heeft uitgecheckt.
Probeer het uit met de volgende opdracht:
$ git check mijn mijn eerste filiaal
U zou een bevestiging moeten krijgen die er ongeveer zo uitziet:
Nu ga je naar deze tak en het zou een schone lei moeten zijn. Om dit te bevestigen, voer git status
om te controleren of er gewijzigde bestanden zijn.
Nadat u klaar bent met het aanbrengen van wijzigingen, voegt u normaal gesproken de branch samen tot de master branch. We hebben nog geen wijzigingen aangebracht, dus laten we dat nu doen voordat we de twee vestigingen samenvoegen.
Breng nog een wijziging aan in het Xcode-project. Voor de mijne voeg ik de volgende regel dummy-code toe in mijn viewDidLoad ()
methode:
let gooey = "fooey"
U kunt elke gewenste wijziging aanbrengen. Zorg ervoor dat u weet welk bestand en welke wijziging u heeft aangebracht.
Nadat dat is gebeurd, voert u de volgende regel code opnieuw uit:
$ git-status
Nu zou je de bestandsnaam in het rood moeten zien, en je moet je committen voordat je deze verandering terugvoert naar je hoofdtak. Ik vertrouw erop dat je weet hoe je dat moet doen, dus laten we doorgaan naar de volgende stap. Controleer nogmaals of de commit succesvol was git status
.
Inmiddels had je de code moeten invoeren, dus laten we ons klaarmaken om de twee takken samen te voegen. Voer eerst de volgende opdracht uit:
$ git checkout master
Dit commando schakelt naar de meester
om zich voor te bereiden om samen te voegen met de andere tak die we hebben gemaakt. Ten slotte, om samen te voegen, voert u de volgende opdracht uit:
$ git voeg mijn-eerste-filiaal samen
U zou een bevestiging moeten krijgen die er als volgt uitziet:
Nu zijn uw wijzigingen van de feature branch terug samengevoegd in de master. Als de mastertak is gewijzigd sinds de vertakking is gemaakt, probeert Git automatisch de wijzigingen in de featureteksten te combineren met de master. Als dit niet automatisch gebeurt, wordt u gevraagd om eventuele conflicten handmatig op te lossen.
Nu weet u hoe takken samen te voegen, ze te maken en ertussen te schakelen met alleen de Terminal!
Zoals je ziet, is het niet zo moeilijk om versiebeheer met je project te doen, en de beloningen zijn het zeker waard. Versiebeheer is een beproefde methode voor kernontwikkeling en u moet ermee bekend zijn als u in een professionele context wilt werken.
Ik hoop dat dit bericht je het vertrouwen heeft gegeven om dagelijks versiebeheer te gebruiken. Als je meer wilt weten over Git, bekijk dan hier onze geanimeerde instructievideo's op Envato Tuts+.