git basic stanley hsiao 2010_12_15
Post on 03-Sep-2014
317 Views
Preview:
DESCRIPTION
TRANSCRIPT
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
What is the difference between a tag and a branch in
git?• From the theoretical point of view:– tags are symbolic names for a given revision.– branches are symbolic names for line of
development.
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
top related