Git   Distributed Version Control System
Upcoming SlideShare
Loading in...5
×
 

Git Distributed Version Control System

on

  • 780 views

 

Statistics

Views

Total Views
780
Views on SlideShare
780
Embed Views
0

Actions

Likes
2
Downloads
21
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Apple Keynote

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n

Git   Distributed Version Control System Git Distributed Version Control System Presentation Transcript

  • GitVictor Wong
  • OutlineInstall and Configure Git (x)Git ConceptsGit CommandsGit WorkflowGit Hosting (GitHub, Bitbucket)Case Studies
  • InstallationGit for OS Xhttp://code.google.com/p/git-osx-installer/Git for Windowshttp://code.google.com/p/msysgit/
  • Setting users name and email globally in git $ git config --global user.name "Victor Wong" $ git config --global user.email "victorwkm@gmail.com" $ git config user.name bonus: $ cat ~/.gitconfig
  • Add color to status and branch $ git config --global color.status auto $ git config --global color.branch auto
  • Git Concepts
  • Git Conceptsremote repo <-> local repo <-> staging area <-> working directory# On branch master# Changes to be committed:# (use "git reset HEAD <file>..." to unstage)# Changed but not updated:# (use "git add <file>..." to update what will be committed)# (use "git checkout -- <file>..." to discard changes in working directory)# Untracked files:# (use "git add <file>..." to include in what will be committed)
  • Basic Git CommandsCreating & Getting Branching Inspection init branch log clone checkout show mergeBasic Remote Sharing status remote add push commit pull mv, rm fetch tag
  • Advanced Git Commands git-stash git-pop git-apply git-blame git-diff git-reflog git-reset git-revert git-clean git-rebase git-fetch
  • Branch
  • $ git branch testing
  • $ git checkout testing
  • new commit on testing branch
  • $ git checkout master
  • $ git commit -m Change the master!
  • Merge
  • $ git checkout master$ git merge iss53Merge made by recursive.README | 1 +1 files changed, 1 insertions(+), 0 deletions(-)
  • Conflict
  • $ git status$ vim index.html$ git add index.html$ git commit
  • .git/confighooks (pre-commit, post-commit, ...)
  • Git Workflow
  • Distributed Workflows
  • Centralized Workflow (us)
  • Integration-Manager Workflow (GitHub)
  • Dictator and Lieutenants Workflow (Linux)
  • github.com
  • GitHubCode ReviewCommit CommentsAnalyze BranchesCompare ViewPull request
  • Case Studies
  • Can I change the commitmessage before or after push?
  • Can I change the commitmessage before or after push? $ git commit --amend bonus: $ git rebase -i Note: Never change your commit history after push to a public repository!
  • How do I ignore files in a project? Some filessuch as .log which shouldnt be include in every project, can I ignore it in every projects?
  • How do I ignore files in a project? Some filessuch as .log which shouldnt be include in every project, can I ignore it in every projects? $ vim .gitignore ... add the file and folder path that you dont want git to track ... $ vim ~/.gitignore_global $ git config --global core.excludesfile ~/.gitignore_global Bonus: git config --global --list Remind: Dont add too much files in the globa excludesfile
  • Search commit message
  • Search commit message git log -g --grep=<pattern> -g, --walk-reflogs Instead of walking the commit ancestry chain, walk reflog entries from the most recent one to older ones. --grep=<pattern> Limit the commits output to ones with log message that matches the specified pattern (regular expression).
  • Can I change the filename case in Git? fatal: destination exists, source=font.ttf, destination=Font.ttf
  • Can I change the filename case in Git? fatal: destination exists, source=font.ttf, destination=Font.ttf git mv -f font.ttf Font.ttf
  • You have pushed a WordPress folder in the Github and pull it fromthe server.But you make a mistake, you want to- keep the wp-config.php in the server- remove it on the GitHub, so your colleagues wont get a copy ofthe wp-config.php
  • You have pushed a WordPress folder in the Github and pull it fromthe server.But you make a mistake, you want to- keep the wp-config.php in the server- remove it on the GitHub, so your colleagues wont get a copy ofthe wp-config.php [On the server] $ vim .gitignore $ git commit -am ignore wp-config.php file $ git rm --cached wp-config.php $ git commit -m remove wp-config.php $ git push
  • Clients: This feature worked well in the past.Why does it not work properly today?We: How do we use Git to quickly identify theissue?
  • Clients: This feature worked well in the past.Why does it not work properly today?We: How do we use Git to quickly identify theissue? Use GitHub to: search history blame $ git checkout <commit-sha>
  • Can I undo a git commit?
  • Can I undo a git commit?Preserve all changes as unstaged changes$ git reset HEAD^Preserve all changes$ git reset --soft HEAD^Discard all changes$ git reset --hard HEAD^
  • You are on a branch called "development", and you receivedan email from the client said this bug needs to be fixednow! Hence, you tried to switch your branch to "hotfix" or"master" to do a quick fix, but your working dirctory is"dirty", what should you do?
  • You are on a branch called "development", and you receivedan email from the client said this bug needs to be fixednow! Hence, you tried to switch your branch to "hotfix" or"master" to do a quick fix, but your working dirctory is"dirty", what should you do? $ git stash $ git checkout master ... fix issue ... $ git commit -am "fix issue #100" $ git checkout development $ git stash list $ git stash pop bonus: $ git stash apply stash@{0} $ git stash drop stash@{0}
  • The same code can also applied to thefollowing scenario.After finishing the development, you suddenlyrealized the you are developing a feature onthe WRONG branch. Can I save thosechanges and apply those changes in thecorrect branch?
  • RecommendationsRead the git ERROR messageCommit or lose itDo one thing at a time (the smaller thebetter)Don’t modify any history after pushing to livePractice together
  • ReferencesGit Reference http://gitref.org/Pro Git http://git-scm.com/book