You are on page 1of 28

GIT & GITHUB BASICS

GameCraft Training 
Radoslav Georgiev (@Rado_G)
DISCLAIMER
I’m not a Git expert or pro 
Agenda
• Why use Source Control System ?
• How to setup Git and Github on Windows ?
• Terminology
• Repositories 1.0 – git {init, add, commit, push, remote}
• Repositories 2.0 – .gitignore, git {clone, pull, revert, mv,
rm}
• Fork & Pull + Shared Repos
Why use Source Control Systems ?
What is ? Why use ?

• SCS are a tool that helps • Keeps the developing


keeping versions of the process simple
code • All files are hosted
• SCS allow multiple (Github)
developers to work on the • No nose bleed!
same code with minimum • Tons of благинки
amount of collisions
No Source Control System =
Agenda
• Why use Source Control System ?
• How to setup Git and Github on Windows ?
• Terminology
• Repositories 1.0 – git {init, add, commit, push, remote}
• Repositories 2.0 – .gitignore, git {clone, pull, revert, mv,
rm}
• Fork & Pull + Shared Repos
How to setup Git and Github on
Windows?
• First of all – create a Github Account
• And second :

• There’s a great guide @ the Github site -


http://help.github.com/win-set-up-git/
How to setup Git and Github on
Windows? cont’d
• You’ll need msysgit (Linux shell)
• You’ll have to generate an SSH key-pair
• And think of a passphrase ! <- Important
• You’ll have to add the SHH keys to your Github account
• Then test : $ ssh –T git@github.com
some output .. (yes/no)
$ yes
Hi username! You‟ve successfully authenticated, but Github
does not provide shell access.

• gg, wp
And some configuration ^_^
• Name & Email – Github tracks them
$ git config –global user.name “Firstname Lastname”
$ git config –global user.email “email@email.com”

• Github API token


• On the GitHub site Click “Account Settings” > Click “Account
Admin.”
$ git config –global github.user username
$ git config –global github.token the_token
DEMO TIME
1) Create a Github account
2) Set up with Windows
Agenda
• Why use Source Control System ?
• How to setup Git and Github on Windows ?
• Terminology
• Repositories 1.0 – git {init, add, commit, push, remote}
• Repositories 2.0 – .gitignore, git {clone, pull, revert, mv,
rm}
• Fork & Pull + Shared Repos
Some basic Terminology
• git = the shell command to work with Git
• repo = Repository, where the code for a given project is
kept
• commit = verb, means push the code to the server (in
Git, commit = (commit + push)
• diff = the difference between two versions of a file
• SSH = Secure SHell – Network protocol for
communication between machines
• RSA = Rivest, Shamir, Adleman – public-key
cryptography algorithm
$ command
Output of the command
Agenda
• Why use Source Control System ?
• How to setup Git and Github on Windows ?
• Terminology
• Repositories 1.0 – git {init, add, commit, push,
remote}
• Repositories 2.0 – .gitignore, git {clone, pull, revert, mv,
rm}
• Fork & Pull + Shared Repos
Lets create a repo !
• Click on the new repository button in Github
• Start the shell (Git Bash)
• Execute the super-complex command :
$ git init
Initialized empty Git repository in c:/code/TestingGithub/.git/

• Great, now we have repo. Lets create a file, shall we ?


$ touch omgrofl.txt
$ notepad omgrofl.txt (and add text) or $ echo “rofllol” > omgrofl.txt
$ cat omgrofl.txt  cat prints to the output
rofllol
Lets create a repo ! (cont’d)
• Okay, lets add it !

$ git add omgrofl.txt

• And commit it 
$ git commit –m „This is a commit message‟
Some gitorish output

• And for the sake of learning, lets edit it again


$ echo “roflcopter” >> omgrofl.txt
$ cat omgrofl.txt
rofllol
roflcopter
Lets create a repo ! (cont’d)
• And now, lets see :

$ git status

• Outputs :
# On branch master
# Changes not staged for commit:
# (use "git add <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# modified: omgrofl.txt

• Almost there
$ git add omgrofl.txt
$ git status
How it works? Staging area.
What about Github ? Remotes ?
• Okay, you suck, there’s nothing @ Github
• Damn. Enter magic!
$ git remote add origin git@github.com:UserName/ProjectName.git

• Git commits locally, pushes remotely !!!!!!!


• Add the remote when the repo is created (git init,
remember ? )
$ git remote add [name] [url]

• Want to see the remotes ?


$ git remote -v
What about Github ? Push it up, baby!
• Okay, we have committed and added a remote to Github.
It’s time to push 
$ git push origin master
Enter passphrase ! 

• Open up the repo in Github and enjoy ^_^


• The push command explained :
$ git push [remote_name] [branch]

• Branches are black magic for later 


• There’s a big chance that the branch you are pushing to
will be named “master”
Recap ! Creating a repo
• Create a repo
$ git init

• Add an remote
$ git remote add origin git@github.com:UserName/ProjectName.git

• Check if directory is a git repo


$ ls –la
Search for .git folder
Recap ! The workflow.
• Edit files and check the status
$ git status

• Add them to the staging area


$ git add file1.php file2.php file3.php
• Commit the changes
$ git commit –m „Commit message that explains the changes‟
• Push them to Github
$ git push origin master
Enter passphrase!

• Celebrate ! 
DEMO
1) Create yourself a repo (from Github)
2) Add and Commit few files
3) Push them !
4) Repeat 2) and 3) few times
TAKE A BREAK.
We all deserve it 
Agenda
• Why use Source Control System ?
• How to setup Git and Github on Windows ?
• Terminology
• Repositories 1.0 – git {init, add, commit, push, remote}
• Repositories 2.0 – .gitignore, git {clone, pull, revert,
mv, rm}
• Fork & Pull + Shared Repos
Don’t push your passwords
• Use .gitignore
$ touch .gitignore
$ echo “db_config.php” >> .gitignore
$ git add .gitignore
$ git push origin master
Enter passphrase!

• Something missing ?
$ git commit –m „You are not seeing my passwords!‟
Made a mistake ? No worries
• Unstage something – git reset

$ git add index.php


$ git status
Says it‟s staged. I don‟t want to ! I changed my mind.
$ git reset HEAD – index.php
$ git status
Now I‟m happy ^_^

• Revert a commit ? Reset hard!


$ git reset –hard HEAD~1
OR
$ git reset –hard <commit_id>
Fork time.
• If you want to get a repo – fork is the way.
• Fork on github and then
$ git clone git@github.com:UserName/ProjectName.git
• This inits a new Git repository!
• You can do everything with the code now – this is a
separate repository.
• More @ http://help.github.com/fork-a-repo/
Shared repos
• If you are added as a collaborator @ some repo – you
can do everything (clone, add, commit, push) without
restrictions.
• Shared repos mean more developers. More Developers =
more changes.

$ git pull [remote_name]

• This will pull the latest changes 

You might also like