getting into git

44
Getting Into Git 8/11/2012 Rick Umali [email protected] @rickumali http://tech.rickumali.com/ This presentation is on Google Drive at: http://sn.im/git-talk-2012 There you can read the 'speaker notes' for this presentation. You can also provide feedback at: https://joind.in/6830

Upload: rickumali

Post on 28-Nov-2014

380 views

Category:

Technology


3 download

DESCRIPTION

This was a presentation I gave at the 2012 NorthEast PHP conference, in Cambridge, MA.

TRANSCRIPT

Page 1: Getting Into Git

Getting Into Git8/11/2012

Rick [email protected]@rickumalihttp://tech.rickumali.com/

This presentation is on Google Drive at:

http://sn.im/git-talk-2012

There you can read the 'speaker notes' for this presentation. You can also provide feedback at:

https://joind.in/6830

Page 2: Getting Into Git

Questions I Plan to Answer

What is source control?

What is the big deal with Git?

Can you show me a little Git?Commits. Branches. Merges. Remote repos.

Page 3: Getting Into Git

What is Source Control?

Source code control is the most important practice a coding professional can do.

A mechanism to track changes in source code.

Used for version history, auditing, and recovery.

Page 4: Getting Into Git

Revision Control Example: Wiki

Page 5: Getting Into Git

Revision Control Example: Git

This is what we'll be trying.

Page 6: Getting Into Git

Git

Git is an open source, distributed version control system designed for speed and efficiency.

● Freedom● No "server" required● Unique architecture

Page 7: Getting Into Git

Installing Git

http://git-scm.com/book/en/Getting-Started-Installing-Git

The installation is very easy!

Page 8: Getting Into Git

Warning: Command Line Ahead

Page 9: Getting Into Git

Our Example: A Basic Drupal Module

Page 10: Getting Into Git

Creating a "Repository"

Let's pretend we're developing a Drupal module.

% cd web/sites/all/modules% mkdir dumpstamp% cd dumpstamp% git init

"git init" creates the entire Git repository. No server interaction required!

Page 11: Getting Into Git

Committing Your First File

To 'commit' means 'to save the state' of your work. You must first 'add' this change to the 'staging area'.

% vi README.txt% git add README.txt% git commit -m "First commit. README file."

Use 'git help' to learn all the switches. -m stands for message.

Page 12: Getting Into Git

Looking at the Repository History

% git log

Each 'commit' contains an ID, along with the author information from earlier, and a time stamp.

% gitk

GUI tools can help you visualize the 'repo.'

Page 13: Getting Into Git

Adding More Files

% vi dumpstamp.info dumpstamp.module% git status% git add .% git commit

This second commit saves the work of adding two files by using 'git add .'.

The .module and .info files are the two required files for every Drupal module.

Page 14: Getting Into Git

Enabling Our Drupal Module% drush pm-info dumpstamp

% drush pm-enable dumpstamp

Page 15: Getting Into Git

Examining Changes to Files

% vi dumpstamp.module% git status% git diff% git add dumpstamp.module% git commit% git log

The above is a typical 'workflow'.

Git offers suggestions and hints as you use it.

Page 16: Getting Into Git

Doing More Changes

% vi dumpstamp.module% git diff% git commit -a

Or even:

% git commit -a -m "Commit message."

Another typical 'workflow'.

Page 17: Getting Into Git

Looking at the Log Again

The history can be examined different ways.

% git log% git log --format=short% git log --format=oneline% git log --oneline

Page 18: Getting Into Git

Revisiting History

You can 'revisit' any point of your history.

% git checkout SHAID

Every commit is known by its SHA ID.

This is the first step in making a branch! (Use git checkout master to revert.)

Page 19: Getting Into Git

Branching and Merging Next, But...

What we have covered so far is probably 70-80% of what you will do with git.

Adding and committing files are the heart of git (and any version control system).

Page 20: Getting Into Git

Git encourages experimentation, by making branching very easy.

Branching

Page 21: Getting Into Git

Branching: git branch

% git branch BRANCH SHA1% git checkout BRANCH

Make some edits on a change below the master, then commit.

git branch makes a branch from the branch you're on (default branch is 'master').

Page 22: Getting Into Git

Branching: Starting State

SHA 1Amaster

NOTE: 'master' is a branch that's created 'by default'.

Page 23: Getting Into Git

Branching: Make Some Changes

SHA 1A

SHA 2Bmaster

git commit

Page 24: Getting Into Git

Branching: Making a Branch

SHA 1A

SHA 2Bmaster

branch1

git branch "branch1" SHA1Agit checkout "branch1"

OR git checkout -b branch1 SHA1A

Page 25: Getting Into Git

Branching: Changes on the Branch

SHA 1A

SHA 2Bmaster branch1SHA 3C

(Make changes in "branch1".)git commit

Page 26: Getting Into Git

Visualizing the Branches

Page 27: Getting Into Git

Merging

Bringing two branches together.

First 'checkout' the branch you want to merge into (typically master), then 'merge' the branch.

% git checkout master% git merge BRANCH

Page 28: Getting Into Git

Merging: Starting State

SHA 1A

SHA 2Bmaster branch1SHA 3C

Page 29: Getting Into Git

Merging: Two Steps

SHA 1A

SHA 2B

master

branch1SHA 3C

SHA 4D

git checkout mastergit merge branch1

Page 30: Getting Into Git

Merging: The Hard Part

Manual 'merging' may be required.

Page 31: Getting Into Git

Visualizing the Merge

Page 32: Getting Into Git

Whew!

Page 33: Getting Into Git

Remote Branches

You can 'browse' public Git repositories for code that you want to examine or use.

You can upload a local Git repository to a public Git repository.

Page 34: Getting Into Git

Common Public Git Repositories

Page 35: Getting Into Git

Browsing and Grabbing Code

git clone [email protected]:rickumali/RickUmaliVanityWebsite.git

Page 36: Getting Into Git

Uploading Code (to Github)

Create a key pair on your machine.

Create a repository (on Github).

Add a 'remote' (via git remote add).

Upload your code (via git push).

Page 37: Getting Into Git

Creating a Key Pair

Page 38: Getting Into Git

Creating a Repository

Page 39: Getting Into Git

Adding a Remote, then Upload

Page 40: Getting Into Git

After An Upload (to Github)

git clone [email protected]:rickumali/DumpStamp.git

Page 41: Getting Into Git

Next Steps

Install Git.

Commit your code changes frequently.

Log verbosely (in commit messages).

Experiment (branch) often.

Page 42: Getting Into Git

Getting Into Git

Rick [email protected]@rickumalihttp://tech.rickumali.com/

Thank you!

Page 43: Getting Into Git

Resources

http://git-scm.org/Both "Pro Git" book, and Git reference

http://gitref.org/A "quicker" Git reference

http://www-cs-students.stanford.edu/~blynn/gitmagic/"Friendlier" Git walk-through (git magic).

http://drupal.org/node/803746A workflow for using Git with Drupal.

http://www.mail-archive.com/[email protected]/msg39091.html

Linus on "clean history."

Page 44: Getting Into Git

Resources

http://www.youtube.com/watch?v=4XpnKHJAok8Linus Torvalds (Git creator) (May '07)

http://www.youtube.com/watch?v=8dhZ9BXQgc4Randal Schwartz (Perl expert and Git old-timer) (Oct

'07)http://www.youtube.com/watch?v=ZDR433b0HJY

Scott Chacon (Pro Git author) (July '11)