Lær det grundlæggende i Git på under 10 minutter

Ja, titlen er en clickbait. Der er ingen måde, du kan forstå det grundlæggende i git-teknologi på bare 10 minutter. Men du kan komme temmelig tæt på cirka 25 minutter. Og det er formålet med denne artikel.

Hvis du vil komme i gang med at lære om Git-teknologi, er du kommet til det rigtige sted. Dette er en omfattende begyndervejledning til Git. Der er mange klienter til Git. Teknologien er den samme uanset klienten. Men i denne vejledning bruger vi GitHub til at forstå Git.

Lad os komme igang!

Hvad er versionskontrol?

Versionskontrol er et system, der registrerer ændringer i en fil eller et sæt filer over tid, så du kan huske specifikke versioner senere. Så ideelt set kan vi placere enhver fil i computeren på versionskontrol.

Umm ... Okay ... Men hvorfor Tho?

Her er hvorfor:

Et versionskontrolsystem (VCS) giver dig mulighed for at gendanne filer tilbage til en tidligere tilstand, gendanne hele projektet til en tidligere tilstand, gennemgå ændringer foretaget over tid, se hvem der sidst har ændret noget, der muligvis forårsager et problem, hvem introducerede et problem og hvornår og mere. Brug af en VCS betyder også, at hvis du skruer op eller mister filer, kan du generelt gendanne let. Og nogle gange vil du bare vide "hvem skrev dette crap" , og det er umagen værd at have adgang til disse oplysninger?.

Så hvad er Git?

Git er et versionskontrolsystem til at spore ændringer i computerfiler og koordinere arbejdet med disse filer blandt flere personer. Git er et distribueret versionskontrolsystem . Så Git stoler ikke nødvendigvis på en central server til at gemme alle versionerne af et projekts filer. I stedet "kloner" hver bruger en kopi af et arkiv (en samling af filer) og har projektets fulde historie på sin egen harddisk. Denne klon har alle metadata for originalen, mens selve originalen er gemt på en selvhostet server eller en tredjeparts hostingtjeneste som GitHub.

Git hjælper dig med at holde styr på de ændringer, du foretager i din kode. Det er dybest set historiefanen for din kode editor (Uden inkognitotilstand?). Hvis du på et hvilket som helst tidspunkt under kodning rammer en fatal fejl og ikke ved, hvad der forårsager det, kan du altid vende tilbage til den stabile tilstand. Så det er meget nyttigt til fejlfinding. Eller du kan bare se, hvilke ændringer du har foretaget i din kode over tid.

I eksemplet ovenfor repræsenterer alle tre kort forskellige versioner af den samme fil. Vi kan vælge hvilken version af filen vi vil bruge til enhver tid. Så jeg kan hoppe frem og tilbage til enhver version af filen i git-tidskontinuumet.

Git hjælper dig også med at synkronisere kode mellem flere personer. Så forestil dig, at du og din ven samarbejder om et projekt. I arbejder begge på de samme projektfiler. Nu tager Git de ændringer, du og din ven har foretaget uafhængigt af hinanden, og sammenflet dem til et enkelt " Master " -lager. Så ved at bruge Git kan du sikre, at du begge arbejder på den nyeste version af arkivet. Så du behøver ikke bekymre dig om at sende dine filer til hinanden og arbejde med et latterligt antal kopier af den originale fil. Og at samarbejde langdistance bliver lige så let som HTML?.

Git Workflow:

Før vi begynder at arbejde med Git-kommandoer, er det nødvendigt, at du forstår, hvad det repræsenterer.

Hvad er et arkiv?

Et repository aka repo er intet andet end en samling kildekode.

Der er fire grundlæggende elementer i Git Workflow.

Arbejdsmappe , iscenesættelsesområde , lokalt lager og eksternt lager .

Hvis du overvejer en fil i din arbejdsmappe, kan den være i tre mulige tilstande.

  1. Det kan iscenesættes. Hvilket betyder, at filerne med de opdaterede ændringer er markeret for at være forpligtet til det lokale arkiv, men endnu ikke forpligtet.
  2. Det kan ændres . Hvilket betyder, at filerne med de opdaterede ændringer endnu ikke er gemt i det lokale lager.
  3. Det kan begås . Hvilket betyder, at de ændringer, du har foretaget i din fil, gemmes sikkert i det lokale lager.
  • git add er en kommando, der bruges til at tilføje en fil, der er i arbejdskataloget til iscenesættelsesområdet.
  • git commit er en kommando, der bruges til at tilføje alle filer, der er iscenesat til det lokale lager.
  • git pusher en kommando, der bruges til at tilføje alle forpligtede filer i det lokale lager til det eksterne lager. Så i fjernopbevaringsområdet vil alle filer og ændringer være synlige for alle med adgang til fjernopbevaringsområdet.
  • git fetch er en kommando, der bruges til at hente filer fra det eksterne lager til det lokale lager, men ikke til arbejdsmappen.
  • git merge er en kommando, der bruges til at få filerne fra det lokale arkiv til arbejdsmappen.
  • git puller kommando, der bruges til at hente filer fra fjernlageret direkte til arbejdskataloget. Det svarer til a git fetchog a git merge.

Nu hvor vi ved, hvad Git er, og det er grundlæggende terminologier, lad os se, hvordan vi kan placere en fil under git . Vi skal gøre det på den rigtige og den vanskelige måde. Uden nogen GUI-applikationer.

Jeg antager, at du allerede har en fil, som du vil placere under versionskontrol. Hvis ikke, skal du oprette en prøvemappe med navnet 'MuskCult' og placere nogle prøvekodefiler i den.

Trin 0: Opret en GitHub-konto. Duh.

Hvis du ikke allerede har en, kan du lave en her.

Trin 1: Sørg for, at du har Git installeret på din maskine.

Hvis du bruger en Mac , skal du starte terminalen og indtaste følgende kommando:

$ git --version

Dette vil bede om at åbne et installationsprogram, hvis du ikke allerede har git. Så sæt det op ved hjælp af installationsprogrammet. Hvis du allerede har git, viser den dig bare hvilken version af git du har installeret.

Hvis du kører Linux (deb), skal du indtaste følgende i terminalen:

$ sudo apt install git-all

Hvis du bruger Windows :

$ get a mac

Bare sjov ... Slap af ... Mængden af ​​mennesker, jeg udløste ... Pis ...

Gå til dette link eller dette link for mere information om, hvordan du får det.

Trin 2: Fortæl Git, hvem du er.

Introducer dig selv. Skub ind. Nævn dit Git-brugernavn og din e-mail-adresse alvorligt, da hver Git-forpligtelse vil bruge disse oplysninger til at identificere dig som forfatter.

$ git config --global user.name "YOUR_USERNAME" 
$ git config --global user.email "[email protected]"
$ git config --global --list # To check the info you just provided

Trin 3: Generer / kontroller din maskine for eksisterende SSH-nøgler. (Valgfri)

Hvorfor spørger du? Ved hjælp af SSH-protokollen kan du oprette forbindelse og godkende til fjernadgangsservere og -tjenester . Med SSH-nøgler kan du oprette forbindelse til GitHub uden at angive dit brugernavn eller din adgangskode ved hvert besøg.

Følg dette link for at lære mere om SSH.

herfor at kontrollere, om du har en eksisterende SSH-nøgle.

her for at generere en SSH-nøgle.

herfor at tilføje SSH-nøglen til din GitHub-konto.

Og endelig gå her for at teste dens forbindelse.

Hvis du konfigurerede SSH, erstatter hver git-kommando, der har et link, den med:

Instead of : //github.com/username/reponame
You use : [email protected]/username/reponame.git
 Note : You can use both ways alternatively

Jeg bruger SSH-protokol i denne vejledning.

Trin 4: Lad os git

Opret et nyt lager på GitHub. Følg dette link.

Find nu til den mappe, du vil placere under git i din terminal.

$ cd Desktop/MuskCult

Initialiser Git:

Og for at placere det under git skal du indtaste:

$ touch README.md # To create a README file for the repository$ git init # Initiates an empty git repository

Gå nu til at redigere README.md-filen for at give oplysninger om lageret.

Tilføj filer til Staging Area for commit:

Nu for at tilføje filerne til git-arkivet til commit:

$ git add . # Adds all the files in the local repository and stages them for commit
OR if you want to add a specific file
$ git add README.md # To add a specific file

Lad os se, hvilke filer der er iscenesat, inden vi forpligter os:

$ git status # Lists all new or modified files to be committed

Forpligt ændringer, du har foretaget i din Git Repo:

Nu for at begå filer, du tilføjede til din git repo:

$ git commit -m "First commit"# The message in the " " is given so that the other users can read the message and see what changes you made

Ikke-forpligtende ændringer, du lige har foretaget i din Git Repo:

Antag nu, at du lige har lavet en fejl i din kode eller placeret en uønsket fil inde i arkivet, du kan fjerne scenerne på de filer, du lige har tilføjet ved hjælp af:

$ git reset HEAD~1# Remove the most recent commit# Commit again!

Tilføj en fjern oprindelse og skub:

Hver gang du foretager ændringer i dine filer og gemmer den, opdateres den ikke automatisk på GitHub. Alle de ændringer, vi har foretaget i filen, opdateres i det lokale lager. Nu for at opdatere ændringerne til masteren:

$ git remote add origin remote_repository_URL# sets the new remote

Med kommandoen git remote kan du oprette, få vist og slette forbindelser til andre arkiver.

$ git remote -v# List the remote connections you have to other repositories.

Kommandoen git remote -v viser URL'erne til de eksterne forbindelser, du har til andre arkiver.

$ git push -u origin master # pushes changes to origin

Nu skubber git push- kommandoen ændringerne i dit lokale lager op til det eksterne lager, du har angivet som oprindelse.

Og nu hvis vi går og tjekker vores arkivside på GitHub, skal det se sådan ud:

Og det er det. Du har lige tilføjet filerne til det lager, du lige har oprettet på GitHub.

Se de ændringer, du har foretaget i din fil:

Når du først har foretaget ændringer på dine filer, og du gemmer dem, svarer filen ikke til den sidste version, der var forpligtet til git. For at se de ændringer, du lige har foretaget:

$ git diff # To show the files changes not yet staged

Vend tilbage til den sidste forpligtede version til Git Repo:

Nu kan du vælge at vende tilbage til den sidste forpligtede version ved at indtaste:

$ git checkout .
OR for a specific file
$ git checkout -- 

Se forpligtelseshistorik:

Du kan bruge kommandoen git log til at se historien om den forpligtelse, du har foretaget til dine filer:

$ git log

Hver gang du foretager ændringer, som du vil have reflekteret på GitHub, er følgende den mest almindelige strøm af kommandoer:

$ git add .$ git status # Lists all new or modified files to be committed$ git commit -m "Second commit"$ git push -u origin master

Nu hvis vi går og ser vores repo, kan vi identificere, om forpligtelsen var vellykket ved at se på meddelelsesmeddelelsen for hver fil.

Trin 5: Det er godt og godt ... Men hvordan downloader jeg og arbejder på andre arkiver på GitHub?

Kloning af en Git Repo:

Find til den mappe, du vil klone repoen. Kopier linket til det arkiv, du ønsker, og indtast følgende:

$ git clone remote_repository_URL

Du er velkommen til at gå videre og klone den repo, jeg oprettede ovenfor ved hjælp af: //github.com/Gothamv/MuskCult

Skubbe ændringer til Git Repo:

Nu kan du arbejde på de filer, du ønsker og forpligte sig til ændringer lokalt. Hvis du vil skubbe ændringer til det arkiv, skal du enten tilføjes som en samarbejdspartner for lageret, eller du har oprettet noget kendt som pull-anmodning. Gå og tjek, hvordan du laver en her, og giv mig en pull-anmodning med din kodefil.

Samarbejde:

Så forestil dig, at du og din ven samarbejder om et projekt. I arbejder begge på de samme projektfiler. Hver gang du foretager nogle ændringer og skubber det ind i master repo, skal din ven trække de ændringer, du skubbede ind i git repo. Betydning for at sikre, at du arbejder på den nyeste version af git repo hver gang du begynder at arbejde, er en git pull-kommando vejen at gå.

Nedenfor er et eksempel på et projekt, som min ven og jeg samarbejder om:

Så for at sikre, at disse ændringer afspejles i min lokale kopi af repoen:

$ git pull origin master

Her er to flere nyttige git-kommandoer:

$ git fetch AND$ git merge

I de enkleste termer git fetchefterfulgt af a er git merge lig med a git pull. Men hvorfor eksisterer disse?

Når du bruger git pull, forsøger Git automatisk at udføre dit arbejde for dig. Det er kontekstsensitivt , så Git vil fusionere alle trukkede forpligtelser i den gren, du arbejder i. git pullFusionerer automatisk forpligtelserne uden at lade dig gennemgå dem først .

Når du git fetch, Git samler alle forpligtelser fra målgrenen, der ikke findes i din nuværende gren, og gemmer dem i dit lokale arkiv . Men er det ikke flette dem med din nuværende gren . Dette er især nyttigt, hvis du har brug for at holde dit lager opdateret, men arbejder på noget, der kan gå i stykker, hvis du opdaterer dine filer. For at integrere forpligtelserne i din mastergren bruger du git merge.

En ting mere:

.gitignore

Så hvad er det?

.gitignorefortæller git hvilke filer (eller mønstre) den skal ignorere. Det bruges normalt til at undgå at begå midlertidige filer fra din arbejdsmappe, der ikke er nyttige for andre samarbejdspartnere, såsom kompileringsprodukter, midlertidige filer, IDE'er opretter osv.

Så i ovenstående eksempel bruges filer som __pycache__, .DS_Store af systemet til at gemme information for hurtigere adgang. Dette er ikke nyttigt for andre samarbejdspartnere. Så vi kan fortælle git at ignorere dem ved at tilføje en .gitignorefil.

Brug touch-kommandoen til at oprette .gitignorefilen:

$ touch .gitignore

Og du kan tilføje følgende mønstre for at fortælle git at ignorere sådanne filer.

/*.cmake/*.DS_Store/.user/buildetc. depending upon the files you want git to untrack

Og det er stort set det for det grundlæggende. Hold øje med del 2, som vil fokusere på filial, fletning, stash, rebase osv.

Hvis du kunne lide artiklen, så glem ikke at smadre den klappeknap og sørg for at følge mig til del 2.

Fred ud ✌️

Referencer:

Tilføjelse af et eksisterende projekt til GitHub ved hjælp af kommandolinjen - Brugerdokumentation

Hvis du lægger dit eksisterende arbejde på GitHub, kan du dele og samarbejde på mange gode måder. Hvis du migrerer din ... help.github.com Sådan fortryder du (næsten) noget med Git

En af de mest nyttige funktioner i ethvert versionskontrolsystem er evnen til at "fortryde" dine fejl. I Git, "fortryd" ... blog.github.com Git på kommandolinjen - Vær ikke bange for at begå 0,3 dokumentation

Der er andre måder at installere Git på; du kan endda få en grafisk Git-applikation, der inkluderer kommandolinjen ... dont-be-afraid-to-commit.readthedocs.io Begynd at bruge Git på kommandolinjen | GitLab

Dokumentation til GitLab Community Edition, GitLab Enterprise Edition, Omnibus GitLab og GitLab Runner. docs.gitlab.com Hvad er forskellen mellem 'git pull' og 'git fetch'?

Moderator Bemærk: I betragtning af at dette spørgsmål allerede har fået 67 svar på det (nogle af dem er slettet) ... stackoverflow.com