Ovaj post dolazi iz iritacije s kojom sam se osobno suočio kad sam prvi put učio kodirati - postavljajući svoj lokalni repo i sinkronizirajući se s Githubom.
Naučio sam radeći projekte (često one freeCodeCamp!). Ali trebao sam biti siguran da neću izgubiti naporan rad i da će drugi moći vidjeti težak posao koji ulažem , pa je svaki projekt morao ići na Github. Što sam imao cjelovitije projekte na Githubu, to bi regrutima bilo lakše. No koraci potrebni za postavljanje projekta, inicijalizaciju repo-a i sinkronizaciju s Githubom bili su stvarno dosadni i ponavljajući se, pa sam odlučio riješiti problem.
Loše vijesti: ovo neće biti velik, otmjen, detaljan i tehnički seksi post. Bit će vrlo neseksi.
Dobra vijest: za to ne trebate biti bog skriptanja ljuske (dess).
Dakle, moj tipični tijek rada oko postavljanja projekta obično ide ovako:
1) Idite u moju ../projects
mapu i pokrenite mkdir project-of-some-name
da biste stvorili mapu s imenom project-of-some-name
.
2) cd
u tu mapu projekta i napravite git init
inicijalizaciju lokalnog git repo-a tamo.
3) pokrenite touch README.MD
za stvaranje README
datoteke, otvorite je i dodajte neke osnovne opise, uključujući veze do resursa / vodiča koje sam implementirao u taj projekt. Spremite datoteku.
4) trči git add .
i ondagit commit -m ' ...some initial commit message...
5) otvorite preglednik, idite na Github, prijavite se, stvorite novo (udaljeno) spremište, kopirajte url, vratite se na moj terminal, provjerite jesam li bio u ispravnoj mapi projekta project-of-some-name
... zatim pokrenite git skripte potrebne za postavljanje udaljeni repo kao 'uzvodni' repo i na njega povežite moj lokalni repo. Tada, napokon, mogu pokrenuti a git push
i moj lokalni predaj bit će poguran
6) lezite i odrijemajte, iscrpljeni od ovog ponavljajućeg postupka.
Doduše, ovo je bio moj postupak, ali volio sam ostati organiziran i uvijek moći pristupiti svojim projektima kako bih se mogao na njih pozivati.
Budući da je automatizacija izvrstan način vježbanja svojih vještina kodiranja, odlučio sam napisati malu skriptu ljuske koja automatizira ove užasne i ponavljajuće korake. Scenarij je na dnu ovog posta, i imajte na umu - nije sofisticiran ili otmjen. Ali to će sigurno obaviti posao, a ja se ne trebam prijaviti u Github i zavaravati sve te korake!
Prije kopiranja skripte morate znati kako je pokrenuti na vašem Macu. Dakle, u nastavku su navedeni koraci koje trebate implementirati da biste mogli koristiti skriptu za automatizaciju vašeg procesa postavljanja.
1) Svoje skripte čuvam u svojoj root / home mapi, u podmapi zvanoj scripts
. Predlažem da učinite isto ili slično. Da biste došli do root / home mape, u svom terminalu, cd ~
jer je tilda ( ~
) simbol za početnu mapu. U vašoj aplikaciji Mac Finder prikazuje se kao ona s ikonom kuće. Dakle, sve moje skripte su pohranjene u~/scripts
2) To je važno jer za pokretanje skripte ljuske iz bilo kojeg direktorija na terminalu morate otkucati puni put. U mom slučaju moram otkucati kako ~/scripts/git-script.sh
bih pokrenuo skriptu. Ali idemo ispred sebe.
3) kopirajte dio koda na dnu ovog posta, a zatim otvorite uređivač teksta, zalijepite ga i spremite kao [filename].sh
. To .sh
je proširenje za skripte ljuske. Spremite datoteku u direktorij u koji je želite spremiti - opet preporučujem ~/scripts
kao mapu u koju ćete spremiti svoje skripte.
4) Idite do te mape na vašem terminalu. Da biste bili sigurni, pokrenite ls
terminal kako biste provjerili postoji li skripta. Ako nije, nalazite se u pogrešnoj mapi ili korak 3 nije uspješno dovršen.
5) Neka skripta ljuske bude izvršna. Da biste to upišite u terminalu sljedeće: chmod +x <>
. Ovo je unix način da skriptu ljuske učinim "izvršnom". Nisam siguran da u potpunosti razumijem što to znači, osim što je potrebno za izvršavanje bilo koje skripte ljuske koju napišete, zato me nemojte pitati i neću vam lagati.
6) dođite do mape projekata i napravite novu mapu u koju namjeravate smjestiti projekt. Učinkovito, to morate učiniti: mkdir
- stvorite project-of-some-name
unutrašnjost mape u kojoj čuvate sve svoje projekte. Tako će vaš projekt na kraju biti smješten unutra my-computer/my-projects/project-of-some-name
. cd
u ovu mapu, a zatim upišite pwd
da biste dobili puni put. Kopirajte to - morat ćete ga brzo zalijepiti. To bi trebalo izgledatimy-computer/my-projects/project-of-some-name
7) ponovo otvorite terminal i unesite . Scenarij radi! Vodit će vas kroz neke unose ... Glavni koraci su:~/scripts/
<>
> kako želite nazvati svoj Github repo ( nemojte koristiti razmake - 'my-awesome-project' je dobar. Nemojte koristiti 'my awesome project' kao naziv repo-a.
> Unesite opis koji će se prikazati u opisu Github repo-a. Za ovo je sigurno koristiti razmake.
> Unesite put projekta koji ste dobili u koraku 6, onaj koji dobijete nakon što upišete pwd
u terminal i dobijete nešto sličnomy-computer/my-projects/project-of-some-name
> unesite svoje korisničko ime za Github (ne e-adresu), a zatim lozinku za Github. Budite oprezni jer tipkate jer se ove vrijednosti ne prikazuju na zaslonu.
> .... to je to. Skripta će postaviti vaš git repo lokalno iznutra, my-computer/my-projects/project-of-some-name
a zatim će stvoriti README.MD
(prazno), a zatim će ga izvršiti lokalno, zatim će postaviti udaljeni repo u Githubu (prijaviti se putem API-ja) itd., A zatim sve pogurati!
> konačno, vidjet ćete da je terminal s kojim ste komunicirali promijenio trenutno aktivni direktorij u mapu vašeg projekta. Sada će biti u, my-computer/my-projects/project-of-some-name
a vi možete unijeti ls
i vidjeti README.MD
datoteku. Ako tada upišete, git status
vidjet ćete status vašeg lokalnog repo-a (stanje vašeg lokalnog projekta), a ako ga upišete git remote
, prikazat će vam Github url za vaš projekt!
Gotovo! Sretno kodiranje!
Annnd ..... napokon ...... evo scenarija! Komentirao sam svaki korak kako biste ga mogli obrazložiti.
# Make executable with chmod +x <> CURRENTDIR=${pwd} # step 1: name of the remote repo. Enter a SINGLE WORD ..or...separate with hyphens echo "What name do you want to give your remote repo?" read REPO_NAME echo "Enter a repo description: " read DESCRIPTION # step 2: the local project folder path echo "what is the absolute path to your local project directory?" read PROJECT_PATH echo "What is your github username?" read USERNAME # step 3 : go to path cd "$PROJECT_PATH" # step 4: initialise the repo locally, create blank README, add and commit git init touch README.MD git add README.MD git commit -m 'initial commit -setup with .sh script' # step 5 use github API to log the user in curl -u ${USERNAME} //api.github.com/user/repos -d "{\"name\": \"${REPO_NAME}\", \"description\": \"${DESCRIPTION}\"}" # step 6 add the remote github repo to local repo and push git remote add origin //github.com/${USERNAME}/${REPO_NAME}.git git push --set-upstream origin master # step 7 change to your project's root directory. cd "$PROJECT_PATH" echo "Done. Go to //github.com/$USERNAME/$REPO_NAME to see." echo " *** You're now in your project root. ***"
Postskriptum za studente f reeCodeCampa
Zaista, istinski vjerujem da su vam najdragocjeniji resursi vrijeme, trud i novac. Od njih, najvažniji izvor je vrijeme, jer se preostala dva mogu obnoviti i oporaviti. Pa ako ćete potrošiti vrijeme na nešto, pobrinite se da vas to približi ovom cilju.
Imajući to na umu, ako želite uložiti 3 sata sa mnom kako biste pronašli svoj najkraći put do učenja kodiranja (pogotovo ako mijenjate karijeru, poput mene ...), krenite na moju stranicu tečaja i upotrijebite obrazac tamo se prijavite (ne skočni prozor!). Ako u poruku dodate riječi "BESPLATNO MOJE VRIJEME", znat ću da ste čitač freeCodeCampa i poslat ću vam promotivni kôd, jer i mene je, kao i vi, i freeCodeCamp solidno pokrenuo.
Također, ako želite saznati više, pogledajte epizodu 53 podcasta freeCodeCamp, gdje Quincy (osnivač FreeCodeCampa) i ja dijelimo svoja iskustva kao promjene u karijeri koje bi vam mogle pomoći na putovanju. Podkastu možete pristupiti i na iTunes, Stitcher i Spotify.
Mogu me kontaktirati na Twitteru: @ZubinPratap