Git basic stanley hsiao 2010_12_15

Post on 03-Sep-2014

309 views 0 download

Tags:

description

 

Transcript of Git basic stanley hsiao 2010_12_15

Git Basic2

Stanley Hsiao2010.12.15

Caution!!• Note that this is not a step-by-step tutorial• Contains only some concepts and illustrations

Resource• Books– Progit• Online book written by Scott Chacon

– The Git Community Book• maintained by Scott Chacon

• Interface Tools– http://git-scm.com/tools• TortoiseGit (Windows)

– TortoiseGit is a port of the popular TortoiseSVN project to Git.

Pro git http://progit.org/book/

• 1. Getting Started– 1.1 - About Version Control– 1.2 - A Short History of Git– 1.3 - Git Basics– 1.4 - Installing Git– 1.5 - First-Time Git Setup– 1.6 - Getting Help– 1.7 - Summary

• 2. Git Basics– 2.1 - Getting a Git Repository– 2.2 - Recording Changes to the Repository– 2.3 - Viewing the Commit History– 2.4 - Option Description of Output– 2.5 - %s Subject– 2.6 - Option Description– 2.7 - Option Description– 2.8 - Undoing Things– 2.9 - Working with Remotes– 2.10 - Tagging– 2.11 - Tips and Tricks– 2.12 - Summary

Git Basics• Chapter 2• Git Basics• If you can read only one chapter to get going with Git, this is it.

– 2.1 - Getting a Git Repository git init, git clone– 2.2 - Recording Changes to the Repository git status, git add, git commit– 2.3 - Viewing the Commit History git log, – 2.4 - Option Description of Output– 2.5 - %s Subject– 2.6 - Option Description– 2.7 - Option Description– 2.8 - Undoing Things git reset– 2.9 - Working with Remotes git remote, git fetch, git push– 2.10 - Tagging git tag, git show,– 2.11 - Tips and Tricks git ….– 2.12 - Summary

Single user version control

Outline• Basic Command of revision control software• Review Branch in git– Understanding git log– Detached Head State

• Merge VS. Rebase

Basic Commands

Software 

repository init 

clone  pull  push 

local branches 

checkout  update  lock  add  remove  move  copy  merge  commit  revert 

generate bundle file 

rebase

Git init / init --bare clone fetch

[72] push branch clone pullUnknown

add rm mv

cp [then] git add[73]

merge commit checkout bundle reba

se

Git Basics• Nearly Every Operation Is Local

REVIEW BRANCH IN GIT

Head

Review of Branch

Git overview

https://github.com/swem/training-for-using-git/

git log

git log –decorate=full

git log –decorate=full

Understanding git log• refs/heads/master• refs/heads/new_branch• HEAD• refs/remotes/origin/master• refs/remotes/origin/new_branch• tag: refs/tags/v0.1• tag: refs/tags/v0.2

• Recommend reading especially http://progit.org/book/ch3-5.html

“Detached head” state

“Detached head” state• git checkout– Branchhead Example: git checkout my_bch– Arbitrary commit Example: git checkout 48eeb5• “Detached head” state

“Detached head” state• Examining an old version without creating a

new branch

• it means the HEAD file points directly to a commit, not to a symbolic reference.

“Detached head” stateit means the HEAD file points directly to a commit, not to a symbolic reference.

“Detached head” statePros• easy way to check out a

particular version without having to make up a name for the new branch.

• You can still create a new branch (or tag) for this version later if you decide to.

Cons• The issue is that you

generally don’t want to work in a detached head environment, because it’s easy to lose changes.

MERGE VS. REBASE

Merge BranchBEFORE AFTER

Rebase BranchBEFORE AFTER

Rebase Branch• Do not rebase commits that you have pushed to a public repository.– http://progit.org/book/ch3-6.html

Multi-user version control

Remote• open source software hosting facilities:– http://en.wikipedia.org/wiki/Comparison_of_ope

n_source_software_hosting_facilities• One of these– GitHub

github• SSH channel– Get help with generating ssh keys

http://help.github.com/

github

github

git push• Example in

http://www.kernel.org/pub/software/scm/git/docs/git-push.html

• git push (remote) (branch):– Example: git push origin my_branch

• you have to explicitly push the branches you want to share.

git push• you have to explicitly push the branches you

want to share.– That way, you can use private branches for work

you don’t want to share, and push up only the topic branches you want to collaborate on.

References• http://progit.org/book/• http://www.kernel.org/pub/software/scm/git/

docs/user-manual.html