Anda di halaman 1dari 28

9/7/2016

AnIntrotoGitandGitHubforBeginners(Tutorial)

Product
HOM E

JOBS

BLOG

OP E N S OURCE

HUBSPOT
PRODUCTAND
ENGINEERING
BLOG

http://product.hubspot.com/blog/gitandgithubtutorialforbeginners

1/28

9/7/2016

AnIntrotoGitandGitHubforBeginners(Tutorial)

AnIntrotoGitandGitHubfor
Beginners(Tutorial)
OCT1,2015/BYMEGHANNELSON
Tweet

Share

Like

Share

23

InAugust,wehostedaWomenWhoCodemeetupat
HubSpotandledaworkshopforbeginnersonusinggitand
GitHub.Ifirstwalkedthroughaslidepresentationonthe
basicsandbackgroundofgitandthenwebrokeoutinto
groupstorunthroughatutorialIcreatedtosimulate
workingonalarge,collaborativeproject.Wegotfeedback
aftertheeventthatitwasahelpful,handsonintroduction.
http://product.hubspot.com/blog/gitandgithubtutorialforbeginners

2/28

9/7/2016

AnIntrotoGitandGitHubforBeginners(Tutorial)

Soifyou'renewtogit,too,followthestepsbelowtoget
comfortablemakingchangestothecodebase,openingup
apullrequest(PR),andmergingcodeintothemaster
branch.AnyimportantgitandGitHubtermsareinboldwith
linkstotheofficialgitreferencematerials.

Step0:InstallgitandcreateaGitHub
account
Thefirsttwothingsyou'llwanttodoareinstallgitand
createafreeGitHubaccount.
Followtheinstructionsheretoinstallgit(ifit'snotalready
installed).Notethatforthistutorialwewillbeusinggiton
thecommandlineonly.WhiletherearesomegreatgitGUIs
(graphicaluserinterfaces),Ithinkit'seasiertolearngit
usinggitspecificcommandsfirstandthentotryoutagit
GUIonceyou'remorecomfortablewiththecommand.
Onceyou'vedonethat,createaGitHubaccounthere.
(Accountsarefreeforpublicrepositories,butthere'sa
chargeforprivaterepositories.)

http://product.hubspot.com/blog/gitandgithubtutorialforbeginners

3/28

9/7/2016

AnIntrotoGitandGitHubforBeginners(Tutorial)

Step1:Createalocalgitrepository
Whencreatinganewprojectonyourlocalmachineusing
git,you'llfirstcreateanewrepository(oroften,'repo',for
short).
Tousegitwe'llbeusingtheterminal.Ifyoudon'thave
muchexperiencewiththeterminalandbasiccommands,
checkoutthistutorial(especiallythe'Navigatingthe
Filesystem'and'MovingAround'sections).
Tobegin,openupaterminalandmovetowhereyouwant
toplacetheprojectonyourlocalmachineusingthecd
(changedirectory)command.Forexample,ifyouhavea
'projects'folderonyourdesktop,you'ddosomethinglike:

mnelson:Desktopmnelson$cd~/Desktop
mnelson:Desktopmnelson$mkdirmyproject
mnelson:Desktopmnelson$cdmyproject/

terminalcd.md hosted with by GitHub

view raw

Toinitializeagitrepositoryintherootofthefolder,runthe
gitinitcommand:

http://product.hubspot.com/blog/gitandgithubtutorialforbeginners

4/28

9/7/2016

AnIntrotoGitandGitHubforBeginners(Tutorial)
mnelson:myprojectmnelson$gitinit
InitializedemptyGitrepositoryin/Users/mnelson/Desktop/myproject/.git/

gitinit.md hosted with by GitHub

view raw

Step2:Addanewfiletotherepo
Goaheadandaddanewfiletotheproject,usinganytext
editoryoulikeorrunningatouchcommand.
Onceyou'veaddedormodifiedfilesinafoldercontaininga
gitrepo,gitwillnoticethatchangeshavebeenmadeinside
therepo.But,gitwon'tofficiallykeeptrackofthefile(that
is,putitinacommitwe'lltalkmoreaboutcommitsnext)
unlessyouexplicitlytellitto.

mnelson:myprojectmnelson$touchmnelson.txt
mnelson:myprojectmnelson$ls
mnelson.txt

addfile.md hosted with by GitHub

view raw

http://product.hubspot.com/blog/gitandgithubtutorialforbeginners

5/28

9/7/2016

AnIntrotoGitandGitHubforBeginners(Tutorial)

Aftercreatingthenewfile,youcanusethegitstatus
commandtoseewhichfilesgitknowsexist.

mnelson:myprojectmnelson$gitstatus
Onbranchmaster
Initialcommit
Untrackedfiles:
(use"gitadd<file>..."toincludeinwhatwillbecommitted)
mnelson.txt
nothingaddedtocommitbutuntrackedfilespresent(use"gitadd"totrack)

gitstatus.md hosted with by GitHub

view raw

Whatthisbasicallysaysis,"Hey,wenoticedyoucreateda
newfilecalledmnelson.txt,butunlessyouusethe'git
add'commandwearen'tgoingtodoanythingwithit."

Aninterlude:Thestagingenvironment,
thecommit,andyou
Oneofthemostconfusingpartswhenyou'refirstlearning
gitistheconceptofthestagingenvironmentandhowit
relatestoacommit.

http://product.hubspot.com/blog/gitandgithubtutorialforbeginners

6/28

9/7/2016

AnIntrotoGitandGitHubforBeginners(Tutorial)

Acommitisarecordofwhatfilesyouhavechangedsince
thelasttimeyoumadeacommit.Essentially,youmake
changestoyourrepo(forexample,addingafileor
modifyingone)andthentellgittoputthosefilesintoa
commit.
Commitsmakeuptheessenceofyourprojectandallow
youtogobacktothestateofaprojectatanypoint.
So,howdoyoutellgitwhichfilestoputintoacommit?This
iswherethestagingenvironmentorindexcomein.As
seeninStep2,whenyoumakechangestoyourrepo,git
noticesthatafilehaschangedbutwon'tdoanythingwithit
(likeaddingitinacommit).
Toaddafiletoacommit,youfirstneedtoaddittothe
stagingenvironment.Todothis,youcanusethegitadd
<filename>command(seeStep3below).
Onceyou'veusedthegitaddcommandtoaddallthefiles
youwanttothestagingenvironment,youcanthentellgitto
packagethemintoacommitusingthegitcommit
command.
Note:Thestagingenvironment,alsocalled'staging',isthe
newpreferredtermforthis,butyoucanalsoseeitreferred
toasthe'index'.
http://product.hubspot.com/blog/gitandgithubtutorialforbeginners

7/28

9/7/2016

AnIntrotoGitandGitHubforBeginners(Tutorial)

Step3:Addafiletothestaging
environment
Addafiletothestagingenvironmentusingthegitadd
command.
Ifyourerunthegitstatuscommand,you'llseethatgithas
addedthefiletothestagingenvironment(noticethe
"Changestobecommitted"line).

mnelson:myprojectmnelson$gitstatus
Onbranchmaster
Initialcommit
Changestobecommitted:
(use"gitrmcached<file>..."tounstage)
newfile:mnelson.txt

addtostaging.md hosted with by GitHub

view raw

Toreiterate,thefilehasnotyetbeenaddedtoacommit,
butit'sabouttobe.

Step4:Createacommit
http://product.hubspot.com/blog/gitandgithubtutorialforbeginners

8/28

9/7/2016

AnIntrotoGitandGitHubforBeginners(Tutorial)

It'stimetocreateyourfirstcommit!
Runthecommandgitcommitm"Yourmessageabout
thecommit"

mnelson:myprojectmnelson$gitcommitm"Thisismyfirstcommit!"
[master(rootcommit)b345d9a]Thisismyfirstcommit!
1filechanged,1insertion(+)
createmode100644mnelson.txt

commit.md hosted with by GitHub

view raw

Themessageattheendofthecommitshouldbesomething
relatedtowhatthecommitcontainsmaybeit'sanew
feature,maybeit'sabugfix,maybeit'sjustfixingatypo.
Don'tputamessagelike"asdfadsf"or"foobar".Thatmakes
theotherpeoplewhoseeyourcommitsad.Very,very,sad.

Step5:Createanewbranch
Nowthatyou'vemadeanewcommit,let'strysomething
alittlemoreadvanced.
Sayyouwanttomakeanewfeaturebutareworriedabout
makingchangestothemainprojectwhiledevelopingthe
feature.Thisiswheregitbranchescomein.
http://product.hubspot.com/blog/gitandgithubtutorialforbeginners

9/28

9/7/2016

AnIntrotoGitandGitHubforBeginners(Tutorial)

Branchesallowyoutomovebackandforthbetween'states'
ofaproject.Forinstance,ifyouwanttoaddanewpageto
yourwebsiteyoucancreateanewbranchjustforthat
pagewithoutaffectingthemainpartoftheproject.Once
you'redonewiththepage,youcanmergeyourchanges
fromyourbranchintothemasterbranch.Whenyoucreate
anewbranch,Gitkeepstrackofwhichcommityourbranch
'branched'offof,soitknowsthehistorybehindallthefiles.
Let'ssayyouareonthemasterbranchandwanttocreate
anewbranchtodevelopyourwebpage.Here'swhatyou'll
do:Rungitcheckoutb<mybranchname>.This
commandwillautomaticallycreateanewbranchandthen
'checkyouout'onit,meaninggitwillmoveyoutothat
branch,offofthemasterbranch.
Afterrunningtheabovecommand,youcanusethegit
branchcommandtoconfirmthatyourbranchwascreated:

mnelson:myprojectmnelson$gitbranch
master
*mynewbranch

gitbranch.md hosted with by GitHub

view raw

Thebranchnamewiththeasterisknexttoitindicateswhich
branchyou'repointedtoatthatgiventime.
http://product.hubspot.com/blog/gitandgithubtutorialforbeginners

10/28

9/7/2016

AnIntrotoGitandGitHubforBeginners(Tutorial)

Now,ifyouswitchbacktothemasterbranchandmake
somemorecommits,yournewbranchwon'tseeanyof
thosechangesuntilyoumergethosechangesontoyour
newbranch.

Step6:Createanewrepositoryon
GitHub
Ifyouonlywanttokeeptrackofyourcodelocally,you
don'tneedtouseGitHub.Butifyouwanttoworkwitha
team,youcanuseGitHubtocollaborativelymodifythe
project'scode.

TocreateanewrepoonGitHub,loginandgotothe
GitHubhomepage.Youshouldseeagreen'+New
repository'button:

http://product.hubspot.com/blog/gitandgithubtutorialforbeginners

11/28

9/7/2016

AnIntrotoGitandGitHubforBeginners(Tutorial)

Afterclickingthebutton,GitHubwillaskyoutonameyour
repoandprovideabriefdescription:

http://product.hubspot.com/blog/gitandgithubtutorialforbeginners

12/28

9/7/2016

AnIntrotoGitandGitHubforBeginners(Tutorial)

Whenyou'redonefillingouttheinformation,pressthe
'Createrepository'buttontomakeyournewrepo.
GitHubwillaskifyouwanttocreateanewrepofrom
scratchorifyouwanttoaddarepoyouhavecreated
locally.Inthiscase,sincewe'vealreadycreatedanewrepo
locally,wewanttopushthatontoGitHubsofollowthe
'....orpushanexistingrepositoryfromthecommand
line'section:

mnelson:myprojectmnelson$gitremoteaddoriginhttps://github.com/cubeton/mynewrepos
mnelson:myprojectmnelson$gitpushuoriginmaster
Countingobjects:3,done.
Writingobjects:100%(3/3),263bytes|0bytes/s,done.
Total3(delta0),reused0(delta0)
Tohttps://github.com/cubeton/mynewrepository.git
*[newbranch]master>master
Branchmastersetuptotrackremotebranchmasterfromorigin.

http://product.hubspot.com/blog/gitandgithubtutorialforbeginners

13/28

9/7/2016

AnIntrotoGitandGitHubforBeginners(Tutorial)

addgithub.md hosted with by GitHub

view raw

(You'llwanttochangetheURLinthefirstcommandlineto
whatGitHublistsinthissectionsinceyourGitHub
usernameandreponamearedifferent.)

Step7:PushabranchtoGitHub
Nowwe'llpushthecommitinyourbranchtoyournew
GitHubrepo.Thisallowsotherpeopletoseethechanges
you'vemade.Ifthey'reapprovedbytherepository'sowner,
thechangescanthenbemergedintothemasterbranch.
TopushchangesontoanewbranchonGitHub,you'llwant
torungitpushoriginyourbranchname.GitHubwill
automaticallycreatethebranchforyouontheremote
repository:

mnelson:myprojectmnelson$gitpushoriginmynewbranch
Countingobjects:3,done.
Deltacompressionusingupto8threads.
Compressingobjects:100%(2/2),done.
Writingobjects:100%(3/3),313bytes|0bytes/s,done.
Total3(delta0),reused0(delta0)
Tohttps://github.com/cubeton/mynewrepository.git
*[newbranch]mynewbranch>mynewbranch

http://product.hubspot.com/blog/gitandgithubtutorialforbeginners

14/28

9/7/2016

AnIntrotoGitandGitHubforBeginners(Tutorial)

addnewbranchgithub.md hosted with by GitHub

view raw

Youmightbewonderingwhatthat"origin"wordmeansin
thecommandabove.Whathappensisthatwhenyouclone
aremoterepositorytoyourlocalmachine,gitcreatesan
aliasforyou.Innearlyallcasesthisaliasiscalled"origin."
It'sessentiallyshorthandfortheremoterepository'sURL.
So,topushyourchangestotheremoterepository,you
could'veusedeitherthecommand:gitpush
git@github.com:git/git.gityourbranchnameorgit
pushoriginyourbranchname
(IfthisisyourfirsttimeusingGitHublocally,itmightprompt
youtologinwithyourGitHubusernameandpassword.)
IfyourefreshtheGitHubpage,you'llseenotesayinga
branchwithyournamehasjustbeenpushedintothe
repository.Youcanalsoclickthe'branches'linktoseeyour
branchlistedthere.

Nowclickthegreenbuttoninthescreenshotabove.We're
goingtomakeapullrequest!
http://product.hubspot.com/blog/gitandgithubtutorialforbeginners

15/28

9/7/2016

AnIntrotoGitandGitHubforBeginners(Tutorial)

Step8:CreateaPullRequest(PR)
Apullrequest(orPR)isawaytoalertarepo'sownersthat
youwanttomakesomechangestotheircode.Itallows
themtoreviewthecodeandmakesureitlooksgoodbefore
puttingyourchangesonthemasterbranch.
ThisiswhatthePRpagelookslikebeforeyou'vesubmitted
it:

Andthisiswhatitlookslikeonceyou'vesubmittedthePR
request:

http://product.hubspot.com/blog/gitandgithubtutorialforbeginners

16/28

9/7/2016

AnIntrotoGitandGitHubforBeginners(Tutorial)

Youmightseeabiggreenbuttonatthebottomthatsays
'Mergepullrequest'.Clickingthismeansyou'llmergeyour
changesintothemasterbranch.
Notethatthisbuttonwon'talwaysbegreen.Insomecases
it'llbegrey,whichmeansyou'refacedwithamerge
conflict.Thisiswhenthereisachangeinonefilethat
conflictswithachangeinanotherfileandgitcan'tfigure
outwhichversiontouse.You'llhavetomanuallygoinand
tellgitwhichversiontouse.
Sometimesyou'llbeacoownerorthesoleownerofa
repo,inwhichcaseyoumaynotneedtocreateaPRto
mergeyourchanges.However,it'sstillagoodideatomake
onesoyoucankeepamorecompletehistoryofyour
http://product.hubspot.com/blog/gitandgithubtutorialforbeginners

17/28

9/7/2016

AnIntrotoGitandGitHubforBeginners(Tutorial)

updatesandtomakesureyoualwayscreateanewbranch
whenmakingchanges.

Step9:MergeaPR
Goaheadandclickthegreen'Mergepullrequest'button.
Thiswillmergeyourchangesintothemasterbranch.

Whenyou'redone,Irecommenddeletingyourbranch(too
manybranchescanbecomemessy),sohitthatgrey'Delete
branch'buttonaswell.
Youcandoublecheckthatyourcommitsweremergedby
clickingonthe'Commits'linkonthefirstpageofyournew
http://product.hubspot.com/blog/gitandgithubtutorialforbeginners

18/28

9/7/2016

AnIntrotoGitandGitHubforBeginners(Tutorial)

repo.

Thiswillshowyoualistofallthecommitsinthatbranch.
YoucanseetheoneIjustmergedrightuptop(Mergepull
request#2).

Youcanalsoseethehashcodeofthecommitontheright
handside.Ahashcodeisauniqueidentifierforthat
specificcommit.It'susefulforreferringtospecificcommits
andwhenundoingchanges(usethegitrevert<hash
codenumber>commandtobacktrack).

http://product.hubspot.com/blog/gitandgithubtutorialforbeginners

19/28

9/7/2016

AnIntrotoGitandGitHubforBeginners(Tutorial)

Step10:GetchangesonGitHubbackto
yourcomputer
Rightnow,therepoonGitHublooksalittledifferentthan
whatyouhaveonyourlocalmachine.Forexample,the
commityoumadeinyourbranchandmergedintothe
masterbranchdoesn'texistinthemasterbranchonyour
localmachine.
Inordertogetthemostrecentchangesthatyouorothers
havemergedonGitHub,usethegitpullorigin
mastercommand(whenworkingonthemasterbranch).

mnelson:myprojectmnelson$gitpulloriginmaster
remote:Countingobjects:1,done.
remote:Total1(delta0),reused0(delta0),packreused0
Unpackingobjects:100%(1/1),done.
Fromhttps://github.com/cubeton/mynewrepository
*branchmaster>FETCH_HEAD
b345d9a..5381b7cmaster>origin/master
Mergemadebythe'recursive'strategy.
mnelson.txt|1+
1filechanged,1insertion(+)

pulloriginmaster.md hosted with by GitHub

view raw

Thisshowsyouallthefilesthathavechangedandhow
they'vechanged.
http://product.hubspot.com/blog/gitandgithubtutorialforbeginners

20/28

9/7/2016

AnIntrotoGitandGitHubforBeginners(Tutorial)

Nowwecanusethegitlogcommandagaintoseeall
newcommits.
(Youmayneedtoswitchbranchesbacktothemaster
branch.Youcandothatusingthegitcheckout
mastercommand.)

mnelson:myprojectmnelson$gitlog
commit3e270876db0e5ffd3e9bfc5edede89b64b83812c
Merge:4f1cb175381b7c
Author:MeghanNelson<mnelson@hubspot.com>
Date:FriSep1117:48:1120150400
Mergebranch'master'ofhttps://github.com/cubeton/mynewrepository
commit4f1cb1798b6e6890da797f98383e6337df577c2a
Author:MeghanNelson<mnelson@hubspot.com>
Date:FriSep1117:48:0020150400
addedanewfile
commit5381b7c53212ca92151c743b4ed7dde07d9be3ce
Merge:b345d9a1e8dc08
Author:MeghanNelson<meghan@meghan.net>
Date:FriSep1117:43:2220150400
Mergepullrequest#2fromcubeton/mynewbranch
Addedsomemoretexttomyfile
commit1e8dc0830b4db8c93efd80479ea886264768520c
Author:MeghanNelson<mnelson@hubspot.com>
Date:FriSep1117:06:0520150400
Addedsomemoretexttomyfile
commitb345d9a25353037afdeaa9fcaf9f330effd157f1
Author:MeghanNelson<mnelson@hubspot.com>
Date:ThuSep1017:42:1520150400
Thisismyfirstcommit!

http://product.hubspot.com/blog/gitandgithubtutorialforbeginners

21/28

9/7/2016

AnIntrotoGitandGitHubforBeginners(Tutorial)

gitlogaftermerge.md hosted with by GitHub

view raw

Step11:Baskinyourgitglory
You'vesuccessfullymadeaPRandmergedyourcodeto
themasterbranch.Congratulations!Ifyou'dliketodivea
littledeeper,checkoutthefilesinthisGit101folderfor
evenmoretipsandtricksonusinggitandGitHub.
Ialsorecommendfindingsometimetoworkwithyourteam
onsimulatingasmallergroupprojectlikewedidhere.Have
yourteammakeanewfolderwithyourteamname,and
addsomefileswithtexttoit.Then,trypushingthose
changestothisremoterepo.Thatway,yourteamcanstart
makingchangestofilestheydidn'toriginallycreateand
practiceusingthePRfeature.And,usethegitblame
andgithistorytoolsonGitHubtogetfamiliarwithtracking
whichchangeshavebeenmadeinafileandwhomade
thosechanges.
Themoreyouusegit,themorecomfortableyou'll...gitwith
it.(Icouldn'tresist.)

http://product.hubspot.com/blog/gitandgithubtutorialforbeginners

22/28

9/7/2016

AnIntrotoGitandGitHubforBeginners(Tutorial)

WrittenbyMeghanNelson

Comments
Sam10/2/2015,8:34:59AM

Veryinformativepost!Thanks!
http://product.hubspot.com/blog/gitandgithubtutorialforbeginners

23/28

9/7/2016

AnIntrotoGitandGitHubforBeginners(Tutorial)

REPLYTOSAM

June 12/13/2015,8:14:56PM

Thanksforthetutorial,butIhaveonequestion.I'vedoneto
step8(Step8:CreateaPullRequest(PR),butthegithub
pagecouldnotfindanychanges,itsays"masterandmy
branchnameareidentical."Itriedseveraltimesbutstill
couldn'tfindthereason.Idon'tknowwheredidIdowrong,
anyonehasthesameproblem?
REPLYTOJUNE

MeghanNelson 12/14/2015,10:04:26PM

HiJune!I'mgladyou'regoingthroughthetutorial.It
soundslikewhat'shappeningisyou'vecreatedyour
newbranchonGitHub,butyouhaven'tmadechanges
(commits)onthatbranchorpushedyourlocalchanges
(commits)ontoGitHub.
Whatyoucandois:
1.Makesureyou'reworkingonthecorrectbranch(use
the'gitbranch'command).Thereshouldbeanasterisk
nexttoyourbranchnameyou'recurrentlyworkingon.
2.Makesureyou'vemadecommitsonyourbranch.
Youcanusethe'gitstatus'commandtoseeifthereare
anyunsavedchanges(Youwantittosay'Onbranch
http://product.hubspot.com/blog/gitandgithubtutorialforbeginners

24/28

9/7/2016

AnIntrotoGitandGitHubforBeginners(Tutorial)

mybranchname
nothingtocommit,workingdirectoryclean').Youcan
usethe'gitlog'commandtomakesurethatyouhave
madecommitsonthatbranch.You'llneedtomakeat
leastonecommitfortheretobedifferencestoappear.
3.Finallyonceyou'resureyou'vemadeacommiton
thatbranch,tryredoingthe'gitpushoriginmybranch
name'commandandrefreshthepageonGitHub.You
shouldthenyourchangeslistedinyourbranchon
GitHub.
Ihopethishelps,letmeknowifyourunintoany
problems!
REPLYTOMEGHANNELSON

June 12/15/2015,5:24:09AM

HiMeghan,
Thanksfortheanswer.YesterdayItrieditagain
andfinallycouldmakethegitpushcommand!
I'mcompletelynewincoding,havejuststudiedit
forafewmonths,andfindingsomethingreally
easytofollowlikeyourtutorialissuchagreat
happiness.
Thankssomuch!
REPLYTOJUNE
http://product.hubspot.com/blog/gitandgithubtutorialforbeginners

25/28

9/7/2016

AnIntrotoGitandGitHubforBeginners(Tutorial)

MichaelOwen 12/30/2015,4:50:48PM

Thanksfortheanswer.YesterdayItrieditagainandfinally
couldmakethegitpushcommand!
I'mcompletelynewincoding,havejuststudieditforafew
months,andfindingsomethingreallyeasytofollowlike
yourtutorialissuchagreathappiness.
Thankssomuch!
Thanksfortheanswer.YesterdayItrieditagainandfinally
couldmakethegitpushcommand!
I'mcompletelynewincoding,havejuststudieditforafew
months,andfindingsomethingreallyeasytofollowlike
yourtutorialissuchagreathappiness.
Thankssomuch!
REPLYTOMICHAELOWEN

KristinDay 5/31/2016,5:05:20PM

Thiswassohelpful!Thankyousomuchforposting!!
REPLYTOKRISTINDAY

VirendraMore 8/14/2016,5:19:51PM

CanIconfigureremoterepositorywithcorporatedomain
useraccounts?
REPLYTOVIRENDRAMORE

http://product.hubspot.com/blog/gitandgithubtutorialforbeginners

26/28

9/7/2016

AnIntrotoGitandGitHubforBeginners(Tutorial)

FIRSTNAME*

LASTNAME

EMAIL*

WEBSITEURL

COMMENT*

SUBSCRIBETOFOLLOWUPCOMMENTSFORTHISPOST

Typethetext
Privacy&Terms

SUBMITCOMMENT

http://product.hubspot.com/blog/gitandgithubtutorialforbeginners

27/28

9/7/2016

AnIntrotoGitandGitHubforBeginners(Tutorial)

SUBSCRIBEFORUPDATES
Email
SUBSCRIBE

TOPICS
PRODUCT
ENGINEERING
DESIGN
PRODUCTMANAGEMENT
UX
CULTURE
CAREERGROWTH

WhatisHubSpot | OurStory | OurProducts | Culture


Code
Facebook | Twitter | Instagram

http://product.hubspot.com/blog/gitandgithubtutorialforbeginners

28/28

Anda mungkin juga menyukai