a quick start - version control with git

27
Dmitry Sheiko @sheiko A Quick Start Version Control with Git

Upload: dmitry-sheiko

Post on 12-May-2015

793 views

Category:

Internet


6 download

DESCRIPTION

A quick start guide for the developers, who are used to work with other version control systems, but consider switching to Git

TRANSCRIPT

Page 1: A Quick Start - Version Control with Git

Dmitry Sheiko

@sheiko

A Quick Start – Version Control with Git

Page 2: A Quick Start - Version Control with Git

What is Git?

Page 3: A Quick Start - Version Control with Git

Why do people love Git?

Page 4: A Quick Start - Version Control with Git

How is Git distributed?

Page 5: A Quick Start - Version Control with Git

What does Git give us?

repo

repo

repo

repo

repo

repo

repo

repo

Page 6: A Quick Start - Version Control with Git

Git branching model

Master branch

Hotfixes

Dev. branch

Release 1.0

Feature branches

TIME

Tag 0.1 Tag 0.2 Tag 1.0

Page 7: A Quick Start - Version Control with Git

How to begin using Git?

Page 8: A Quick Start - Version Control with Git

Installation

Page 9: A Quick Start - Version Control with Git

Setup

$git config --global user.name "Your Name" $git config --global user.email "[email protected]" $git config --global color.diff auto $git config --global color.status auto $git config --global color.branch auto

Page 10: A Quick Start - Version Control with Git

Initialization

$cd /l/vhosts/os.htdocs/example $ls $git init

Go to the source code

Are we really there?

Create Git repository

Page 11: A Quick Start - Version Control with Git

Fork existing repository

$git clone git://github.com/dsheiko/HTML5-Form-Shim.git

Page 12: A Quick Start - Version Control with Git

Commit

$git commit –am “comment”

Page 13: A Quick Start - Version Control with Git

Status

$git status

Page 14: A Quick Start - Version Control with Git

Reverting

$git log $git checkout 64fd65b9194b108643e267795f9442ca9e61631f

Get revisions ids

Use one

Page 15: A Quick Start - Version Control with Git

Resetting

$git reset HEAD --hard

Page 16: A Quick Start - Version Control with Git

Branching

If we have a new feature request, which implementation concerns much of the source code, it would be safer to work on the feature in a separate branch.

$git branch Feature1022 –m “Comment” $git checkout Feature1022 $git branch

Create a branch

Switch to the branch

Show available branches

Page 17: A Quick Start - Version Control with Git

Rebase

$git log $git rebase -i HEAD~7

Take a look what revisions we have

Combine the last 7 revisions

Page 18: A Quick Start - Version Control with Git

Merging

As we finished the requested feature development, we can merge the feature branch with the master branch

$git checkout master $git merge Feature1022 $git branch -d Feature1022

Master branch

Feature1022

Switch to the master branch

Get rid of the feature branch

Page 19: A Quick Start - Version Control with Git

Tagging

We can tag specific points in history as being important. E.g. tag every stable version of the product before deploying.

$git tag v1.1 –m “Comment” $git checkout tags/v1.1 $git tag $git tag –d v.1.1 $git push remote :refs/tags/v.1.1

Create a tag

Switch to the tag

Show available tags

Remote tag in local repo

Remote tag in remote repo

Page 20: A Quick Start - Version Control with Git

Log

We can see our commit history

$git log --graph

.. and much fancier

$gitk --all

Page 21: A Quick Start - Version Control with Git

Working with a remote repo

Let’s associate our local repo to the new created remote repo

$cd /repos/example-remote $git init --bare

$cd /l/vhosts/os.htdocs/example $git remote add origin /repos/example-remote

Page 22: A Quick Start - Version Control with Git

Push changes to a remote repo

We can push our changes collected in the local repository to the remote one to share them with the team

$cd /l/vhosts/os.htdocs/example $git push origin master

Associated remote repo

Branch

Page 23: A Quick Start - Version Control with Git

Pull changes from a remote repo

Pull allows us to get the latest changes from the remote repository.

$cd /l/vhosts/os.htdocs/example $git pull origin master

Page 24: A Quick Start - Version Control with Git

Creating patches

Patch is a text file that contains changes to the source code. This file can be sent to someone else and this person can use this file to apply the changes to his/her local

$git checkout mybranch $git commit -am "First commit in the branch“ $git format-patch origin/master $git checkout master $git apply 0001-First-commit-in-the-branch.patch

Creates 0001-First-commit-in-the-branch.patch

Page 25: A Quick Start - Version Control with Git

Git command aliases

Put into .gitconfig anywhere in parent directory with following content:

[alias] cd = checkout dir = branch ci = commit -a -m lg = log -p undo = reset –hard up = !git push origin master && git push origin --tags

Page 26: A Quick Start - Version Control with Git

Git command aliases

Now you can use shortcuts:

$git cd SomeBranch $git dir $git ci “my comment“ $git up # this one pushes local commits and tags to the remote repo

Page 27: A Quick Start - Version Control with Git

Who’s the dude?

http://dsheiko.com

@sheiko

https://github.com/dsheiko