Hvad er GitHub? Hvad er Git? Og hvordan man bruger disse udviklerværktøjer.

De første programmer, du skriver, vil sandsynligvis ikke være særlig imponerende. Du laver masser af fejl, og du vil aldrig genoptage fortiden.

Men snart nok skriver du store, komplekse programmer. Måske sletter du nogle ting nu, som du vil bringe tilbage senere. Eller måske henter du en ven til at hjælpe og ønsker yndefuldt at tilføje deres ændringer til dit program, mens du fortsætter med at arbejde på dine dele.

Det er her, versionskontrol kommer ind, og det er en færdighed, som enhver arbejdsgiver forventer, at du har mestret. Det er også yderst nyttigt for alle, der arbejder på alt, der er gemt i stykker - fra et computerprogram til en opskrift til en roman.

Hvad er versionskontrol?

Versionskontrol henviser til muligheden for at gemme din plads i et dokument eller en mappe og henvise til tidligere gemninger.

Når jeg skriver denne artikel, overskriver mine nyeste ændringer konstant mine tidligere versioner. Det er ikke versionskontrol, fordi jeg ikke kan gå tilbage til det kladde, jeg havde for en uge siden. Men hvis jeg skrev dette ved hjælp af Git, ville det være muligt.

Hvad er Git?

Git er et versionskontrolsystem udviklet af Linus Torvalds i 2005 (den samme fyr, der skrev Linux). Git hjælper udviklere med at holde styr på deres kodes tilstand og tillader samarbejde på en codebase. Vi gennemgår hovedkomponenterne lidt senere.

Hvis du vil følge med, skal du have Git installeret på din computer. Åbn en terminal og skriv git. Hvis du ser en liste over mulige kommandoer, er du klar til at gå!

Mange computere leveres med Git allerede installeret. Hvis du har brug for installation, kan du følge instruktionerne her på din computer.

Brug af Git

Hvis du nogensinde har brugt et computerprogram eller et videospil og bemærket, at du kan gå tilbage til en tidligere gemt version, forstår du iboende behovet for Git. Det er simpelthen at gemme et øjebliksbillede af dit program i tide.

Men i stedet for at skulle holde styr på hver eneste linje med kode i dit program bemærker den i stedet ændringerne mellem den kode, du har nu, og sidste gang du gemte. Den holder løbende opmærksom på, hvornår hver linje kode blev gemt sidst, og gemmer dem i en særlig skjult mappe.

Lad os overveje dette JavaScript-program. Den udskriver tre linjer til konsollen (et output, du kan se i din browser eller terminal):

console.log('Hello, this is a git example!') console.log('And here is another!') console.log('And yet a third') 

git init

Hvis jeg vil gemme versioner af mit arbejde, kan jeg bruge Git. Først skriver jeg git initind i min terminal, så jeg kan begynde at bruge Git. Der oprettes en .gitmappe, hvor Git gemmer sine filer.

git add

git add .vil tilføje alle filerne i vores program. Hvis du gjorde det, git initefter at du oprettede en fil, eller når som helst du opretter nye filer, bliver du nødt til at bede Git om at begynde at spore ændringer til dem med denne kommando.

git begå

Derefter skriver jeg git commit -am "Initial commit". git commiter kommandoen til at gemme en version af vores kode. Det -amkaldes et "flag" og signalerer, at der er valgfri handlinger, vi gerne vil foretage med denne forpligtelse. Flagget abetyder, at vi vil gemme alle vores ændringer. Flagget mangiver, at vi vil give en besked bagefter, hvilket er "Initial commit".

Du kan skrive alt, hvad du vil her - freeCodeCamp har mange artikler om, hvordan du skriver gode kommitteringsbeskeder.

Hvordan Git gemmer ændringer

Hvis vi foretager en ændring i vores program (som at ændre teksten på første linje), vil vi måske gemme en version. Vi kunne endda skifte mellem versioner, hvis vi ville se, hvordan vores program har ændret sig over tid.

console.log('Now I have changed the first line.') console.log('And here is another!') console.log('And yet a third') 

git diff

Sådan ser det ud, mens du løber git diff. Git viser dig forskellen mellem den kode, du har nu, og sidste gang den blev gemt.

Det er lidt svært at forstå, hvad der foregår her, men det -er sletninger og det +er indsættelser. Vi fjernede teksten "Hej, dette er et giteksempel!" og tilføjede tekst "Nu har jeg ændret den første linje." Sådan holder Git styr på, hvad der er ændret mellem versionerne.

diff --git a/git.js b/git.js index eb0f1d1..8dbf769 100644 --- a/git.js +++ b/git.js @@ -1,3 +1,3 @@ +console.log('Now I have changed the first line.') -console.log('Hello, this is a git example!') console.log('And here is another!') console.log('And yet a third')

Nu, hvor vi har gennemgået de ændringer, vi begår, kan vi gå videre og gøre en anden begå: git commit -am 'Update first console log'. Dette gemmer de ændringer, jeg foretog i den første tekstlinje.

git log

Vi kan gennemgå de forpligtelser, vi har lavet med kommandoen git log. Hvis jeg kører det i mit program nu, får jeg denne output:

commit 67627dd44e84a3106a18a19e94cf9f3723e59b3c (HEAD -> master) Author: amberwilkie  Date: Wed Apr 22 16:55:39 2020 -0400 Update first console log commit 49fe4152f474a9674a83e2b014a08828209d2690 Author: amberwilkie  Date: Wed Apr 22 16:54:59 2020 -0400 Initial commit

Vi ser vores forpligtelsesmeddelelser, den tid, vi har begået, og et unikt ID til vores forpligtelse, som vi kan bruge til at referere til forpligtelser i fremtiden.

git checkout

Hvis vi ønskede at gå tilbage og se ændringerne i vores kode fra en tidligere forpligtelse, gør vi det med git checkout 49fe4152f474a9674a83e2b014a08828209d2690. Git vil sætte vores kode i en midlertidig tilstand, så vi kan se, hvordan koden lignede det øjebliksbillede.

Jeg kopierede id'et til min første forpligtelse. Hvis jeg kører denne kommando, siger mit program "Hej, dette er et giteksempel!" på første linje.

For at komme tilbage til den nyeste kode skal du skrive git checkout master.

Grene

Hvis du bemærkede ovenfor, var vi nødt til at skrive for masterat komme tilbage til den aktuelle tilstand af vores kode. Hvorfor? Fordi masterer standardnavnet for filialen - det sted, hvor vores kode er mest opdateret.

Git er afhængig af forgrening for at vedligeholde vores kode. Du kan overveje masterstammen på dit kodetræ. Du kan bryde af og foretage nogle ændringer, men det endelige mål er altid at bringe dem tilbage til bagagerummet, til master.

Du kan bruge git checkouttil at oprette en ny gren, ikke kun til at tjekke tidligere versioner af din kode. Prøv git checkout -b new-branch. Den -bflag er brugt, når vi laver en ny filial og efter flaget vi skriver navnet på vores nye filial. Vi kan foretage mange forpligtelser på denne gren og senere få dem tilbage til at mestre med en proces kaldet fletning .

I nedenstående diagram repræsenterer prikkerne forpligtelser. To grene er blevet gjort "off" af mester. I softwareudvikling kalder vi ofte disse "funktions" -grene i modsætning til hovedmastergrenen. Den blå gren er blevet flettet tilbage til master, og den gule gren er stadig under udvikling.

Bemærk, at selvom den gule gren blev oprettet efter den blå gren, vil kun ændringer fra master være synlige i den gren. Hvis vi lavede en tredje gren engang i fremtiden, ville ændringer fra både master og den blå gren være til stede i den nye, tredje gren.

git fusion

git mergevil tage alle de forpligtelser, du har lavet på den gren, og holde dem ind i masterfilialen og gemme dit arbejde.

Hvorfor bruge grene?

Hvis du arbejder alene, giver det måske ikke meget mening at opdele dit arbejde i grene. Hvorfor ikke bare gemme alt på master?

Nytten ved forgrening bliver ikke særlig tydelig, før vi begynder at tænke på at arbejde på et team af udviklere. Hvis de alle forpligtede sig til masterfilialen hver gang de foretog en ændring, ville tingene blive meget rodet meget hurtigt. Det ville også være vanskeligt at kontrollere, hvilken kode der går "til produktion" (live til kunder), og hvilken kode der stadig testes eller arbejdes med.

På denne måde kan hver udvikler have sin egen filial (eller sandsynligvis mange), arbejde på deres funktion så længe de har brug for og fusionere den, når tiden er inde.

Hvad er GitHub?

GitHub er en gratis (til personlig brug) cloud-hostet platform til kode. Det fungerer med Git på din og dine kollegers computere og fungerer som oprindelsen , sandhedskilden for alle, der arbejder på koden.

Du og dine samarbejdspartnere uploader deres kode til GitHub med jævne mellemrum, og GitHub giver værktøj til at hjælpe med at administrere ændringer til koden over tid.

Uploade din kode til GitHub

Først skal du oprette en GitHub-konto. Du bruger denne konto i hele din programmeringskarriere, så hot tip: hold dig med et professionelt navn, helst med dit faktiske navn i den.

Når du er inde, skal du kigge efter en +i øverste hjørne. Klik på "Nyt lager" (navnet på Git-mapper, "repo" for kort). Giv det et navn - sandsynligvis det samme som den mappe, du oprettede tidligere, hvor du har gemt dine forpligtelser. Klik derefter på "Opret lager". Du kan nu kopiere den url, du omdirigeres til, og vi kan indstille oprindelsen til vores kode.

Der vil være et godkendelsestrin på et eller andet tidspunkt her - følg instruktionerne. Git er meget god til at give os klare instruktioner om de næste skridt, vi skal tage.

git remote tilføj oprindelse

Nu fortæller vi vores kodebase (mappen, hvor vores kode er), hvor vores kode skal gemmes i skyen. Vi skriver git remote add origin , hvilket vil indstille en origintil vores lager. Nu kan vi skubbe til vores for originat gemme vores sky på GitHub.

git push

Forudsat at vi stadig er i vores mastergren (det vil sige, at vi ikke har tjekket ud en anden gren), kan vi nu skrive, git pushog vores kode går til GitHub.

Visning af din kode

Nu bor din kode i GitHub! Sådan ser mit eksempel ovenfra ud, efter at jeg har fulgt de GitHub-trin, jeg har forklaret:

You can click through the files and folders of your repository, viewing the current state of the code. You can also view previous versions of the code, by clicking "X commits" on the right side, middle. You'll see a list of the commits made to the repo and if you click into them, you can browse the files of your project as they existed at that slice of time.

Pull Requests

There are many other features of GitHub, but the most important in collaborating with colleagues is a pull request. A pull request (very frequently shortened to PR) is a way to manage incoming changes to the code base.

To make one, you'll make a new branch on your local computer, create at least one commit on that branch, then git push origin head to send that branch to GitHub. (You can put the name of your branch instead of head but it's useful for keeping everything matched up exactly).

Now when you go back to GitHub, you should see your branch available to make a PR.

If you click the "Compare & pull request" button, you'll be able to change many settings for your PR. Most important are generally title and description. If you're working on a team, you can tag colleagues to ask them to review your code, add to projects, and many other features you probably don't care about yet.

Note that we are comparing branches. Here we are requesting to add the changes from this branch (pr-example) into the master branch. But we could target any of the other branches in our repo. For now, just understand that master isn't the only branch you can "make a pull request against".

When you click "Create Pull Request", you'll see this screen:

You can see all the commits in this branch (I have only one - "Change third line of program"), and you can also merge your pull request.

Remember how we could merge our code locally when we talked about Git? We can perform the same action with our cloud-hosted code on GitHub. If you click the green "Merge pull request" button, your changes will be merged into master.

git pull

Den sidste kommando, du har brug for at vide lige nu, er git pull. Hvis du flettede din PR ind i masterfilialen på GitHub, er der nu ændringer i den, originsom du endnu ikke har på din lokale computer. Hvis du tjekker masterfilialen, vil git pull origin masterde ændringer, du lige har flettet, nu være på din lokale computer.

➜ git-example git:(master) git pull origin master From //github.com/AmberWilkie/git-example * branch master -> FETCH_HEAD Updating 67627dd..38ad2da Fast-forward git.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)

At "Fast-forward" henviser til vores lokale mastergren, der "indhenter" originfilialen på GitHub. Vi har afsluttet cirklen:

  • Lokale ændringer
  • Skub til GitHub og lav PR
  • Flet PR til master
  • Træk master til lokal computer

Når du er fortrolig med disse trin, vil du være 80% af vejen til at mestre Git og GitHub!