Evo svih Git naredbi koje sam koristio prošli tjedan i što rade.

Kao i većina novaka, i ja sam počeo pretraživati ​​StackOverflow za naredbe Git, a zatim kopirati odgovore, bez da sam stvarno razumio što su učinili.

Sjećam se da sam razmišljao,"Ne bi li bilo lijepo da postoji popis najčešćih Git naredbi, zajedno s objašnjenjem zašto su korisne?"

Pa, evo mene godinama kasnije da sastavim takav popis i iznesem neke najbolje prakse koje bi čak i srednje napredni programeri trebali smatrati korisnima.

Kako bi stvari bile praktične, ovaj popis zasnivam na stvarnim Git naredbama koje sam koristio proteklog tjedna.

Gotovo svaki programer koristi Git, a najvjerojatnije GitHub. Ali prosječni programer vjerojatno koristi ove tri naredbe samo 99% vremena:

git add --allgit commit -am ""git push origin master

To je sve u redu kada radite u timu za jednu osobu, hackathonu ili bacanju aplikacija, ali kad stabilnost i održavanje počnu postajati prioritet, čišćenje se obvezuje, držite se strategije razgranavanja i pišete poruke koherentnog predavanja postaju važne.

Započet ću s popisom najčešće korištenih naredbi kako bih olakšao početnicima razumijevanje što je moguće s Gitom, a zatim ću prijeći na napredniju funkcionalnost i najbolje prakse.

Redovito korištene naredbe

Da biste inicijalizirali Git u spremištu (repo), samo trebate upisati sljedeću naredbu. Ako ne inicijalizirate Git, ne možete pokrenuti bilo koje druge Git naredbe unutar tog repo-a.

git init

Ako upotrebljavate GitHub i gurate kôd u GitHub repo koji je pohranjen na mreži, koristite udaljeni repo. Zadani naziv (poznat i kao alias) za taj udaljeni repo je izvor . Ako ste kopirali projekt s Githuba, on već ima podrijetlo . To podrijetlo možete pogledati naredbom git remote -v , koja će navesti URL udaljenog repo-a.

Ako ste inicijalizirali vlastiti Git repo i želite ga povezati s GitHub repoom, morat ćete ga stvoriti na GitHubu, kopirati navedeni URL i upotrijebiti naredbu git remote add origin RL>, s URL-om koji pruža GitHub zamjenjujući "". Odatle možete dodavati, urezivati ​​i gurati u svoj udaljeni repo.

Posljednji se koristi kada trebate promijeniti udaljeno spremište. Recimo da ste kopirali repo od nekoga drugog i želite promijeniti udaljeno spremište s izvornog vlasnika na svoj GitHub račun. Slijedite isti postupak kao i git remote add origin , osim što umjesto toga koristite set-url za promjenu udaljenog repo-a.

git remote -vgit remote add origin git remote set-url origin 

Najčešći način kopiranja repo-a je uporaba git klona, nakon čega slijedi URL repo-a.

Imajte na umu da će udaljeno spremište biti povezano s računom s kojeg ste klonirali repo. Dakle, ako ste klonirali repo koji pripada nekom drugom, nećete moći pritisnuti GitHub dok ne promijenite ishodište pomoću gornjih naredbi.

git clone 

Brzo ćete se naći pomoću grana. Ako ne razumijete što su grane, postoje i drugi vodiči koji su puno detaljniji i trebali biste ih pročitati prije nego što nastavite (evo jednog).

Naredba git grana navodi sve grane na vašem lokalnom stroju. Ako želite stvoriti novu granu, možete koristiti git granu me>, s & lt; name> predstavlja ime grane, kao što je "master".

Git checkout me> naredba prebacuje se na postojeću granu. Također možete upotrijebiti naredbu git checkout -b & lt; name> da biste stvorili novu granu i odmah se prebacili na nju. Većina ljudi koristi ovo umjesto zasebnih naredbi za grane i naplatu.

git branchgit branch git checkout git checkout -b 

Ako ste napravili hrpu promjena u grani, nazovimo je "razvij", a želite je spojiti natrag u glavnu granu, koristite git merge

ch> naredba. Vi ćete wa nt na CH eckout master grana, n run git merge d evelop za spajanje razviti u glavnu granu.

git merge 

Ako radite s više ljudi, naći ćete se u položaju kada je repo ažuriran na GitHubu, ali promjene nemate lokalno. Ako je to slučaj, možete koristiti git pull origin

ch> izvući najnovije promjene iz te udaljene grane.

git pull origin 

Ako želite znati koje su datoteke promijenjene i što se prati, možete upotrijebiti git status . Ako želite vidjeti koliko je svaka datoteka promijenjena, možete upotrijebiti git diff da biste vidjeli broj redaka promijenjenih u svakoj datoteci.

git statusgit diff --stat

Napredne naredbe i najbolji postupci

Uskoro dosežete točku u kojoj želite da vaše obveze izgledaju lijepo i da budu dosljedne. Možda ćete također morati petljati po povijesti urezivanja kako biste olakšali razumijevanje svojih obveza ili poništili slučajnu prijelomnu promjenu.

Naredba git log omogućuje vam da vidite povijest urezivanja. To ćete htjeti upotrijebiti za prikaz povijesti svojih obveza.

Vaši predaji dolazit će s porukama i raspršivanjem , što je slučajni niz brojeva i slova. Primjer hasha mogao bi izgledati ovako: c3d882aa1aa4e3d5f18b3890132670fbeac912f7

git log

Recimo da ste gurnuli nešto što vam je pokvarilo aplikaciju. Umjesto da to popravite i gurnete nešto novo, radije se vratite na jedno urezivanje i pokušajte ponovo.

Ako se želite vratiti u prošlost i odjaviti svoju aplikaciju iz prethodnog urezivanja, to možete učiniti izravno koristeći hash kao naziv grane. To će odvojiti vašu aplikaciju od trenutne verzije (jer uređujete povijesni zapis, a ne trenutnu verziju).

git checkout c3d88eaa1aa4e4d5f

Zatim, ako napravite promjene iz te povijesne grane i želite ponovno pritisnuti, morat ćete izvršiti prisilni pritisak.

Oprez: Prisilno guranjeje opasno i treba ga učiniti samo ako to apsolutno morate. Prepisat će povijest vaše aplikacije i izgubit ćete sve što je uslijedilo nakon toga.

git push -f origin master

Drugi puta jednostavno nije praktično držati sve u jednom urezu. Možda želite sačuvati svoj napredak prije nego što pokušate nešto potencijalno rizično, ili ste možda pogriješili i želite se poštedjeti neugodnosti zbog pogreške u povijesti verzija. Za to imamo git rebase .

Recimo da u svojoj lokalnoj povijesti imate 4 urezivanja (koja nisu gurnuta na GitHub) u kojima ste se vraćali naprijed-natrag. Vaše obveze izgledaju neuredno i neodlučno. Možete koristiti rebase za kombiniranje svih tih predaja u jedan sažeti komitet.

git rebase -i HEAD~4

The above command will open up your computer’s default editor (which is Vim unless you’ve set it to something else), with several options for how you can change your commits. It will look something like the code below:

pick 130deo9 oldest commit messagepick 4209fei second oldest commit messagepick 4390gne third oldest commit messagepick bmo0dne newest commit message

In order to combine these, we need to change the “pick” option to “fixup” (as the documentation below the code says) to meld the commits and discard the commit messages. Note that in vim, you need to press “a” or “i” to be able to edit the text, and to save and exit, you need to type the escape key followed by “shift + z + z”. Don’t ask me why, it just is.

pick 130deo9 oldest commit messagefixup 4209fei second oldest commit messagefixup 4390gne third oldest commit messagefixup bmo0dne newest commit message

This will merge all of your commits into the commit with the message “oldest commit message”.

The next step is to rename your commit message. This is entirely a matter of opinion, but so long as you follow a consistent pattern, anything you do is fine. I recommend using the commit guidelines put out by Google for Angular.js.

In order to change the commit message, use the amend flag.

git commit --amend

This will also open vim, and the text editing and saving rules are the same as above. To give an example of a good commit message, here’s one following the rules from the guideline:

feat: add stripe checkout button to payments page
- add stripe checkout button- write tests for checkout

One advantage to keeping with the types listed in the guideline is that it makes writing change logs easier. You can also include information in the footer (again, specified in the guideline) that references issues.

Note: you should avoid rebasing and squashing your commits if you are collaborating on a project, and have code pushed to GitHub. If you start changing version history under people’s noses, you could end up making everyone’s lives more difficult with bugs that are difficult to track.

There are an almost endless number of possible commands with Git, but these commands are probably the only ones you’ll need to know for your first few years of programming.

Sam Corcos is the lead developer and co-founder of Sightline Maps, the most intuitive platform for 3D printing topographical maps, as well as LearnPhoenix.io, an intermediate-advanced tutorial site for building scalable production apps with Phoenix and React.