git hub for designers
DESCRIPTION
In this talk, Teehan+Lax developer Ash Furrow will guide designers through the basics of GitHub. He’ll discuss why GitHub is important and teach you the high-level concepts that will get you started with GitHub today.TRANSCRIPT
GitHub for DesignersAsh Furrow, Teehan+Lax
@ashfurrow
Learn the fundamentals of git and GitHub in order to better collaborate with teams.
Agenda
• Git & GitHub
• Git is a Tool for Managing Files
• The Fundamentals
• Using Git doesn’t Mean Using the Command Line
4
Git & GitHub
Git & GitHub
• Git is a tool for managing files (more on that later)
• GitHub is a website for using git
6
Git & GitHub
• Git can be used independently of GitHub
• Even offline!
• This talk is about using Git & GitHub together
7
Git is a Tool for Managing Files
Git is a Tool for Managing Files
• Git manages simple files
• Text and flat graphics, not PSDs
• CSS, HTML, PNG
• PSDs are too complex for git to manage
• Use LayerVault, instead
9
Git is a Tool for Managing Files
• What does “manage” mean?
• History (who did what, and when?)
• Conflicts (multiple people modifying the same file)
10
The Fundamentals
(More like FUNdamentals, amirite?)
Pulling Down from Remote
12
Your Branch
master
master
rem
ote
loca
l
Your Branch
Pull Request
PushPull Pull
A Repose About Repos
• A repository – or “repo” – is a home for git to put all its files
• Repos can exist locally (on your computer) or remotely (on GitHub) – more on this later
13
Branches
• Hard to define
• Branches are used to isolate changes to files
• Branches are cheap
• Create lots of ‘em
• Ideally one for each new feature/bug fix
14
Branching
• Creating a new branch is called “branching”
• Branch to create new features
• Create new branches off of “master” branch
• Master is the canonical branch
• “Latest and Greatest”
15
Branching
• File system metaphor
16
Branching
17
Your Branch
master
Creating a new branch
Commits
• When you’ve completed a feature or a fix, make a commit
• Commits are snapshots of the staged changes you made
• Not all changes need to be committed
18
Committing
• Branches are just a series of commits
• Committing enters that commit into the git log
• You can see who changed what, and when
19
Committing
• Commits include a “commit message” describing the changes
20
Committing
1. Stage changes
2. Commit staged changes
21
Committing
22
Your Branch
master
commit 1 commit 2
Local vs. Remote
• The master branch exists locally (on your computer) and remotely (on GitHub)
• Your new branch exists only locally
23
Local vs. Remote
• File server metaphor
24
Local vs. Remote
• All work is done locally on local branches
• When ready, you “push” a branch to the remote
• More on pushing shortly
25
Local vs. Remote
• Where did “master” come from?
• The remote
26
Pulling & Pushing
27
Your Branch
master
masterre
mot
e
loca
l
Pull
Pulling & Pushing
• Transitive verbs
• Pushing/pulling depends on context
28
Pulling & Pushing
1. Pull master from GitHub
2. Branch
3. Make commits
4. Push branch to GitHub
29
Pulling & Pushing
30
Your Branch
master
masterre
mot
e
loca
l
Your Branch
PushPull
Pull Requests
• Pull requests are requests to have changes “pulled” into another branch, usually master
• Pull requests exist only on GitHub
• “Request” because someone else is looking it over for mistakes
• Not that you ever make those
31
Pull Requests
• Designate someone on your team as a “Gatekeeper”
32
Pull Requests
33
Your Branch
master
master
rem
ote
loca
l
Your Branch
Pull Request
PushPull
Pull Requests
• Now all of your changes exist on master
• Only the remote master
• You need to “pull” master down again
34
Pulling Down from Remote
35
Your Branch
master
master
rem
ote
loca
l
Your Branch
Pull Request
PushPull Pull
Cloning
Cloning
• Copies the remote repo to your local
• Only done once per repo
• “Initial Setup”
37
Pulling & Pushing
1. Clone
2. Pull master from GitHub
3. Branch
4. Make commits
5. Push branch to GitHub
6. Pull Request
38
Issues
• GitHub has “Issues”
• Issues are conversations about the code
• Bugs, features, improvements, etc...
• You can reference issues in commit messages
39
Issues
40
Conflicts
Conflicts
• Sometimes files conflict
• Git will usually sort it out
• Sometimes it can’t
42
Conflicts
<<<<<<< HEAD
Hello world
=======
Goodbye
>>>>>>> some_other_branch_name
43
Using Git doesn’t Mean Using the Command Line
Using Git doesn’t Mean Using the Command Line
• There are powerful, GUI tools for using git
• Git Tower
• GitHub for Mac
• SourceTree
45
Using Git doesn’t Mean Using the Command Line
• Important: all these tools rely on the fundamentals we learnt earlier
46
Demo
Recap
• Git & GitHub
• Git is a Tool for Managing Files
• The Fundamentals
• Using Git doesn’t Mean Using the Command Line
48
Ash FurrowOctober 3, 2013
Thanks!