Git Tutorial A Comprehensive Guide for Beginners.pdf
DrupalCamp Athens 2010: An intro to Git and GitHub
1. DrupalCamp, Athens, 12 December 2010
An intro to Git and
GitHub
Drupal will be soon hosted at GiHub but before that learn Git for your
own good and sanity
Panagiotis Papadopoulos
6pna / Sfalma
@panosjee
2. Who am I?
Freelancer and startuper wannabe. Athens Ruby and GTUG organiser.
Not a guru in something. Man of all trades master to none with an inclination towards Ruby,
Python, Javascript.
Do not ask me Drupal, but I will help drupalists with www.sfalma.com (shameless promo)
4. What is Git?
Git is a distributed revision control system with an emphasis on speed. Git
was initially designed and developed by Linus Torvalds for Linux
kernel development.
Every Git working directory is a full-fledged repository with complete history
and full revision tracking capabilities, not dependent on network access or a
central server.
Git's current software maintenance is overseen by Junio Hamano. Git is free
software distributed under the terms of the GNU General Public
License version 2.
If Git is a heavenly tool, GitHub is a programmer 's heaven.
- PanosJee, December 12th 2010
Source: http://en.wikipedia.org/wiki/Git_(software)
6. Git is a very simple beast!
Git is:
Distributed
Non linear development
Efficient
very small footprint
Consists of Git objects which are the actual data of Git,
the main thing that the repository is made up of.
The four main objects of Git are blobs, trees, commits
and tags.
A Git object is a file in the repository compressed (with Zlib)
and referenced by the SHA-1 value of its contents plus a
small header. The contents of a file are stored as blobs.
7. The Git model (1)
A simple repo with
the following Commands
structure: $ git init .
$ git add .
$ git commit -m "first commit"
- module
- init.php
-- includes
- definitions.php
-- lib
- model.php
Example from the excellent http://peepcode.com/products/git-internals-pdf
8. The Git model (2)
A simple repo with
the following Commands
structure: $ git tag "first tag"
$ mkdir validators
$ touch email.php
$ git add .
- module $ git commit -m "added validators"
- init.php
-- includes
- definitions.php
-- lib
- model.php
-- validators
- email.php
Example from the excellent http://peepcode.com/products/git-internals-pdf
9. The Git model (3)
A simple repo with
the following
structure:
- module
- init.php
-- includes
- definitions.php
-- lib
- model.php *
-- validators
- email.php
Commands
$ vim model.php
$ git add .
$ git commit -m "include validators"
Example from the excellent http://peepcode.com/products/git-internals-pdf
10. The Git model (4)
A simple repo with
the following
structure:
- module
- init.php
-- includes
- definitions.php
-- lib
- model.php
-- validators
- email.php
Example from the excellent http://peepcode.com/products/git-internals-pdf
11. Git is snapshot based
Multiple parents
1 2
$ git commit -m "new commit"
Easy branching
1 2 3
$ git commit -m "new commit"
$ git branch 4
4
12. Git is snapshot based
master
Easy merging
2
1 1 2 3
5
$ git merge 4
4
14. Git pull. Full control. Remote repos.
Made for speed, full visibility in a few lines.
You can pull from 1-n remote repos. As we said Git is
distributed.
15. Know thy status
What 's untracked. What 's modified. What 's added. What 's
deleted. What 's changed.
16. Git branches carry their history
Once you clone a Git repo you have complete access to all
previous versions. For ever.
17. Git stash
Real life scenario.
You are working on your code and your colleagues just pushed
a very important fix that you needed.
You cannot pull changes if you have not commited your code,
but you should not commit as you are still experimenting.
What do you do ?
Just put your changes aside (git stash) get your friends changes
(git pull) and then apply your changes that you had pust aside
(git stash apply).
Neat?
18. Commit to Open Source in a breeze
The distributed nature of Git The procedure is simple:
means you can work locally 1. Find an open source project
2. Fork it
on code and push to a 3. Clone (download locally)
remote repository when 4. Do your changes
ready. 5. Push to your remote
This is perfect for teams and Wanna have your changes
Open Source projects. merged into initial repo?
1. Do a pull request
2. Hope the author accepts it
19.
20. $ tools
“The bad workman blames his tools”
American Proverb
“We shape our tools and afterwards our tools shape us.”
Marshall McLuhan
The best tool you need is to learn the internals of Git you can
understand how it works.
The second best tool is the command line. Master it. You will
never look back.
Git integrates with various IDEs like Eclipse, NetBeans.
There are also great standalone Git apps.
26. GitHub is the Facebook of Code
GitHub is an unparallel tool I am always struck by the
that offers you unlimited wealth of project I find on
public repos and private GitHub.
repos on subscriptions plans. Lots of major open source
projects are there for you to
Github is: use and study.
1. Collaboration tool Fork them, change them,
2. Code host
contribute in no time.
3. Wiki
4. Issue tracker
5. Code review tool If you are a coder and you
6. Git UI have never used GitHub you
7. Social probably live in a parallel
universe :P