Naučite osnove Gita za manje od 10 minuta

Da, naslov je mamac za klik. Ni na koji način ne možete razumjeti osnove git tehnologije u samo 10 minuta. Ali možete se približiti za otprilike 25 minuta. I to je svrha ovog članka.

Ako želite započeti s učenjem o Git tehnologiji, došli ste na pravo mjesto. Ovo je sveobuhvatan početnički vodič za Git. Za Git ima mnogo klijenata. Tehnologija je ista bez obzira na klijenta. Ali u ovom ćemo vodiču koristiti GitHub za razumijevanje Gita.

Započnimo!

Što je kontrola verzija?

Kontrola verzija je sustav koji s vremenom bilježi promjene datoteke ili skupa datoteka tako da se kasnije možete prisjetiti određenih verzija. U idealnom slučaju, možemo staviti bilo koju datoteku na računalo na kontrolu verzija.

Umm ... Ok ... Ali zašto Tho?

Evo zašto:

Sustav za kontrolu verzija (VCS) omogućuje vam vraćanje datoteka u prethodno stanje, vraćanje cijelog projekta u prethodno stanje, pregled promjena izvršenih tijekom vremena, provjeru tko je zadnji izmijenio nešto što bi moglo uzrokovati problem, tko je uveo problem i kada i više. Korištenje VCS-a također znači da ako zabrljate stvar ili izgubite datoteke, općenito se možete lako oporaviti. A ponekad jednostavno želite znati "tko je napisao ovo sranje" , a ima li pristup tim informacijama vrijedno?.

Pa što je Git?

Git je sustav za kontrolu verzija za praćenje promjena u računalnim datotekama i koordinaciju rada na tim datotekama među više ljudi. Git je distribuirani sustav kontrole verzija . Dakle, Git se ne mora nužno oslanjati na središnji poslužitelj za pohranu svih verzija datoteka projekta. Umjesto toga, svaki korisnik "klonira" kopiju spremišta (zbirka datoteka) i ima punu povijest projekta na vlastitom tvrdom disku. Ovaj klon ima sve metapodatke originala, dok je sam original pohranjen na poslužitelju koji samostalno hostira ili usluzi hostinga treće strane poput GitHub-a.

Git vam pomaže pratiti vaše promjene u kodu. To je u osnovi kartica povijesti za vaš uređivač koda (bez anonimnog načina?). Ako u bilo kojem trenutku tijekom kodiranja naiđete na fatalnu pogrešku i ne znate što je uzrokuje, uvijek se možete vratiti u stabilno stanje. Stoga je vrlo korisno za otklanjanje pogrešaka. Ili jednostavno možete vidjeti koje ste promjene tijekom vremena unijeli u svoj kod.

U gornjem primjeru, sve tri kartice predstavljaju različite verzije iste datoteke. U bilo kojem trenutku možemo odabrati koju verziju datoteke želimo koristiti. Tako da mogu skočiti amo-tamo na bilo koju verziju datoteke u git vremenskom kontinuumu.

Git vam također pomaže u sinkronizaciji koda između više ljudi. Pa zamislite da vi i vaš prijatelj surađujete na projektu. Oboje radite na istim projektnim datotekama. Sada Git uzima promjene koje ste vi i vaš prijatelj napravili neovisno i spaja ih u jedno " Master " spremište. Korištenjem Gita možete osigurati da oboje radite na najnovijoj verziji spremišta. Stoga se ne morate brinuti hoćete li datoteke međusobno slati i raditi sa smiješnim brojem kopija izvorne datoteke. A suradnja na velikim udaljenostima postaje jednostavna poput HTML-a?

Git tijek rada:

Prije nego počnemo raditi s Git naredbama, potrebno je da razumijete što one predstavljaju.

Što je spremište?

Spremište aka repo nije ništa drugo nego skup izvornog koda.

U Git Workflowu postoje četiri temeljna elementa.

Radni direktorij , upisno područje , lokalno spremište i udaljeno spremište .

Ako uzmete u obzir datoteku u svom radnom imeniku, ona može biti u tri moguća stanja.

  1. Može se inscenirati. Što znači da su datoteke s ažuriranim promjenama označene kao dodijeljene lokalnom spremištu, ali još nisu predane.
  2. Može se modificirati . Što znači da datoteke s ažuriranim promjenama još nisu pohranjene u lokalnom spremištu.
  3. Može se počiniti . Što znači da su promjene koje ste napravili u datoteci sigurno pohranjene u lokalno spremište.
  • git add je naredba koja se koristi za dodavanje datoteke koja se nalazi u radnom direktoriju u mjesto za postavljanje.
  • git commit je naredba koja se koristi za dodavanje svih datoteka koje su uprizorene u lokalno spremište.
  • git pushje naredba koja se koristi za dodavanje svih predanih datoteka u lokalno spremište u udaljeno spremište. Dakle, u udaljenom spremištu sve datoteke i promjene bit će vidljive svima koji imaju pristup udaljenom spremištu.
  • git fetch je naredba koja se koristi za dobivanje datoteka iz udaljenog spremišta u lokalno spremište, ali ne u radni direktorij.
  • git merge je naredba koja se koristi za preuzimanje datoteka iz lokalnog spremišta u radni direktorij.
  • git pullje naredba koja se koristi za dobivanje datoteka iz udaljenog spremišta izravno u radni direktorij. Ekvivalentan je a git fetchi a git merge.

Sad kad znamo što je Git i osnovne su terminologije, pogledajmo kako možemo smjestiti datoteku pod git . Učinit ćemo to na ispravan i težak način. Bez ikakvih GUI aplikacija.

Pretpostavljam da već imate datoteku koju želite staviti pod kontrolu verzija. Ako ne stvorite mapu s uzorkom pod nazivom 'MuskCult' i u nju smjestite neke datoteke s uzorcima.

Korak 0: Napravite GitHub račun. Duh.

Ako ga već nemate, ovdje ga možete napraviti.

Korak 1: Provjerite je li Git instaliran na vašem stroju.

Ako ste na Macu , pokrenite terminal i unesite sljedeću naredbu:

$ git --version

Ovo će zatražiti otvaranje programa za instaliranje ako već nemate git. Stoga ga postavite pomoću instalacijskog programa. Ako već imate git, samo će vam pokazati koju ste verziju gita instalirali.

Ako koristite Linux (deb), u terminal unesite sljedeće:

$ sudo apt install git-all

Ako koristite Windows :

$ get a mac

Samo se šalim ... Opusti se ... Količina ljudi koje sam pokrenuo ... Fuj ...

Idite na ovu vezu ili ovu vezu za više informacija o tome kako doći do nje.

Korak 2: Recite Gitu tko ste.

Predstavi se. Uvucite se. Ozbiljno, spomenite svoje korisničko ime i adresu e-pošte za Git, jer će svaki Git zapis koristiti ove podatke da bi vas identificirao kao autora.

$ 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

Korak 3: Generirajte / provjerite ima li na vašem uređaju postojećih SSH ključeva. (Neobvezno)

Zašto pitaš? Korištenjem SSH protokola možete se povezati i provjeriti autentičnost s r emote poslužiteljima i uslugama . Pomoću SSH ključeva možete se povezati s GitHubom bez davanja korisničkog imena ili lozinke pri svakom posjetu.

Slijedite ovu vezu da biste saznali više o SSH.

Idi ovamokako biste provjerili imate li postojeći SSH ključ.

Idite ovdje kako biste generirali SSH ključ.

Idi ovamoda biste dodali SSH ključ na svoj GitHub račun.

I napokon idite ovdje da testirate njegovu povezanost.

Ako ste postavili SSH, svaku git naredbu koja ima vezu zamijenite:

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

U ovom uputstvu koristit ću SSH protokol.

Korak 4: Idemo

Stvorite novo spremište na GitHubu. Slijedite ovaj link.

Sada pronađite mapu koju želite smjestiti pod git na vašem terminalu.

$ cd Desktop/MuskCult

Inicijalizirajte Git:

I da biste ga postavili pod git, unesite:

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

Sada idite na uređivanje datoteke README.md kako biste pružili informacije o spremištu.

Dodajte datoteke u scensko područje za predavanje:

Sada da dodamo datoteke u git spremište za urezivanje:

$ 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

Prije nego što se obvežemo, pogledajmo koje su datoteke uprizorene:

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

Založite promjene koje ste unijeli u svoj Git Repo:

Sada da urežemo datoteke koje ste dodali u svoj 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

Poništite promjene koje ste upravo unijeli u svoj Git Repo:

Pretpostavimo sada da ste upravo pogriješili u kodu ili smjestili neželjenu datoteku u spremište, možete ukloniti datoteke koje ste upravo dodali pomoću:

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

Dodajte udaljeno podrijetlo i Push:

Sada svaki put kada napravite promjene u svojim datotekama i spremite ih, one se neće automatski ažurirati na GitHubu. Sve promjene koje smo napravili u datoteci ažuriraju se u lokalnom spremištu. Sada da ažuriramo promjene na masteru:

$ git remote add origin remote_repository_URL# sets the new remote

Git daljinski naredba omogućuje stvaranje, prikaz i brisanje veze s drugim spremištima.

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

Naredba git remote -v navodi URL-ove udaljenih veza koje imate s drugim spremištima.

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

Sada naredba git push gura promjene u vašem lokalnom spremištu do udaljenog spremišta koje ste naveli kao ishodište.

A sada, ako odemo provjeriti stranicu spremišta na GitHubu, to bi trebalo izgledati otprilike ovako:

I to je to. Upravo ste dodali datoteke u spremište koje ste upravo kreirali na GitHubu.

Pogledajte promjene koje ste unijeli u svoju datoteku:

Jednom kada započnete s promjenama na datotekama i spremite ih, datoteka se neće podudarati s posljednjom verzijom koja je predana u git. Da biste vidjeli promjene koje ste upravo napravili:

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

Vratite se na zadnju predanu verziju u Git Repo:

Sada se možete vratiti na zadnju uređenu verziju tako što ćete unijeti:

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

Pogledajte povijest povjerenja:

Pomoću naredbe git log možete vidjeti povijest urezivanja datoteka:

$ git log

Svaki put kada napravite promjene za koje želite da se odraze na GitHubu, sljedeći su najčešći tijek naredbi:

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

Sada, ako odemo vidjeti naš repo, možemo utvrditi je li urezivanje uspješno gledajući poruku urezivanja za svaku datoteku.

Korak 5: To je sve u redu ... Ali kako da preuzmem i radim na drugim spremištima na GitHubu?

Kloniranje Git Repo-a:

Pronađite direktorij u koji želite klonirati repo. Kopirajte vezu spremišta koje želite i unesite sljedeće:

$ git clone remote_repository_URL

Slobodno nastavite i klonirajte repo koji sam gore stvorio koristeći: //github.com/Gothamv/MuskCult

Guranje promjena u Git Repo-u:

Sada možete raditi na datotekama koje želite i lokalno se obvezati na promjene. Ako želite gurnuti promjene u to spremište, morate ga dodati ili suradnika za spremište ili ste stvorili nešto što se naziva povlačenjem zahtjeva. Idite i pogledajte ovdje kako to učiniti i dajte mi zahtjev za povlačenjem s vašom datotekom koda.

Suradnja:

Pa zamislite da vi i vaš prijatelj surađujete na projektu. Oboje radite na istim projektnim datotekama. Svaki put kad napravite neke promjene i gurnete ih u glavni repo, vaš prijatelj mora povući promjene koje ste gurnuli u git repo. Znači kako biste bili sigurni da radite na najnovijoj verziji git repo-a svaki put kad započnete raditi, naredba git pull je pravi put.

Sada je dolje primjer projekta na kojem surađujemo moj prijatelj i ja:

Dakle, kako bi bili sigurni da se te promjene odražavaju na mojoj lokalnoj kopiji repo-a:

$ git pull origin master

Evo još dvije korisne git naredbe:

$ git fetch AND$ git merge

Najjednostavnije rečeno, git fetchnakon čega slijedi git merge jednako a git pull. Ali zašto onda oni postoje?

Kada koristite git pull, Git pokušava automatski obaviti vaš posao umjesto vas. Osjetljiv je na kontekst , tako da će Git spojiti sve povučene ureze u granu u kojoj trenutno radite. git pullAutomatski spaja komitove, a da vam ne dozvoli da ih prvo pregledate .

Kada vi git fetch, Git prikupi sve predaje iz ciljne grane koji ne postoje u vašoj trenutnoj grani i pohrani ih u vaše lokalno spremište . Međutim, ne spaja ih s vašom trenutnom podružnicom . To je osobito korisno ako trebate redovito ažurirati svoje spremište, ali radite na nečemu što bi se moglo pokvariti ako ažurirate datoteke. Koristite da biste integrirali predaje u svoju glavnu granu git merge.

Još jedna stvar:

.gitignore

Pa što je to?

.gitignoregovori git-u koje datoteke (ili obrasce) treba zanemariti. Obično se koristi za izbjegavanje predavanja prolaznih datoteka iz vašeg radnog imenika koje nisu korisne ostalim suradnicima, poput proizvoda za kompilaciju, privremenih datoteka koje IDE kreiraju itd.

Dakle, u gornjem primjeru, datoteke poput __pycache__, .DS_Store sustav koristi za pohranu podataka za brži pristup. To nije korisno za ostale suradnike. Tako možemo reći git-u da ih ignorira dodavanjem .gitignoredatoteke.

Upotrijebite dodirnu naredbu za stvaranje .gitignoredatoteke:

$ touch .gitignore

Možete dodati i sljedeće obrasce kako biste gitu rekli da ignorira takve datoteke.

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

I to je poprilično to za osnove. Pratite drugi dio koji će se usredotočiti na Branch, Merge, Stash, Rebase itd.

Ako vam se svidio članak, ne zaboravite razbiti gumb za pljeskanje i pobrinite se da me slijedite za 2. dio.

Mir van ✌️

Reference :

Dodavanje postojećeg projekta u GitHub pomoću naredbenog retka - Korisnička dokumentacija

Stavljanje vašeg postojećeg rada na GitHub može vam omogućiti dijeljenje i suradnju na puno sjajnih načina. Ako migrirate svoj ... help.github.com Kako poništiti (gotovo) bilo što pomoću Gita

Jedna od najkorisnijih značajki bilo kojeg sustava za kontrolu verzija je sposobnost "poništavanja" vaših pogrešaka. U Gitu, "poništi" ... blog.github.com Git na naredbenom retku - Ne bojte se predati 0.3 dokumentaciju

Postoje i drugi načini instaliranja Gita; možete čak dobiti i grafičku Git aplikaciju koja će sadržavati naredbeni redak ... dont-be-a boji- se-commit.readthedocs.io Počnite koristiti Git na naredbenom retku | GitLab

Dokumentacija za GitLab Community Edition, GitLab Enterprise Edition, Omnibus GitLab i GitLab Runner. docs.gitlab.com Koja je razlika između "git pull" i "git fetch"?

Napomena moderatora: S obzirom na to da je na ovo pitanje već objavljeno šezdeset i sedam odgovora (neki od njih izbrisani) ... stackoverflow.com