SlideShare a Scribd company logo
1 of 29
Basic Git
2014/07/11
Casper Chen (USGI)
Why Git
• Centralized Version Control System: svn
– can’t develop without connection to VCS server
– this is slow
• Distributed Version Control System: git
– develop locally without connection to VCS server
– repository backup isn’t problem: every clone is also a
backup
• Git
– fast
– less-space for repository
– cheap local branch
2
Distributed VCS
3Computer A Computer B
Repository ServerRepository Server
Version 1
Version 2
Local RepositoryLocal Repository
Version 1
Local RepositoryLocal Repository
Version 2
FilesFiles FilesFiles
pull push
checkout commit
…
Install Git
• In Ubuntu Linux
– sudo apt-get install git
• In Fedora Linux
– sudo yum install git
• In Windows
– http://msysgit.github.com/
– http://code.google.com/p/tortoisegit/
• In Mac
– http://code.google.com/p/git-osx-installer/
4
Configure Git
• Configure the full name to be recorded in any new commit:
git config --global user.name ”Full Name”
• Configure email address to be recorded in any new commit:
git config --global user.email ”user@email.com"
• Always use colors in all git commands:
git config --global color.ui true
• Configure the editor to edit messages when commit or tag:
git config --global core.editor vim
• Specify how many context lines of diff should be displayed:
git config --global gui.diffcontext 5
• Global configuration is in ~/.gitconfig
• For more detailed, please reference “git help config”
5
Initialize Local Repository
1. Enter the directory that you want to manage
by git
– Ex. cd project
1. git init
2. git add --all . (or git add --all --force . to alow
adding otherwise ignored files)
3. git commit --message=“Init”
4. Change description of repository: echo
“description” > .git/description
6
Import Empty Folder to Repository
• touch empty_path/.gitignore
• Add .gitignore to every empty folder
– find . ( -type d -empty ) -and ( -not -regex
./.git.* ) -exec touch {}/.gitignore ;
• The content of .gitignore
# Ignore everything in this directory
*
# Except this file
!.gitignore
7
Build Remote Repository
1. git clone --bare my_project my_project.git
2. Change description of repository: echo
“description” > my_project.git/description
3. Copy my_project.git to remote site
− Ex. Copy to /home/gitserver/my_project.git of
remote site: scp -r my_project.git
gituser@192.168.1.1:/home/gitserver
8
Clone Repository from Remote
Repository
• git clone local_project_path
• git clone user@remote.ip:project_path
• git clone ssh://user@remote.ip:project_path
• Ex. git clone
gituser@192.168.1.1:/home/gitserver/my_pr
oject.git
9
Three areas
10
Working
directory
Staging area Repository
git addgit add
git commitgit commit
git checkoutgit checkout
Submit change to Local Repository
• git add some_files_changed
• git commit
11
Update Local or Remote Repository
• Update local repository from remote’s update
– git pull
– git fetch && git merge
• Update remote repository from local’s
changes
– git push
• Using “git cola” to push for specified branch
12
Remove, move, or rename file
• Delete file
– git rm file_name
• Move or rename file
– git mv file_org file_mod
13
Diff
• Compare the working directory with a specified
commit
– git diff commit
– Ex. git diff 1aj93u5
• Compare two of commits
– git diff commit_1 commit_2
– Ex. git diff 1aj93u5 239ann
• Compare the working directory with staged area
– git diff --staged
14
Clean
• Remove all untracked directories and files
– git clean -df
• Remove all files included file list in .gitignore
– git clean -x
15
Reset
• Back to specified commit
– git reset commit
– Ex. git reset 1aj93u5
• Keep modification in working tree
– git reset HEAD^
• Keep modification in staging area
– git reset HEAD^ --soft
• Destroy all modification
– git reset HEAD^ --hard
• Using gitk 16
Tag
• List all tags
– git tag
• Add a new tag
– git tag -a tagname -m “message for tag”
– Ex. git tag -a v0.1 -m “this is v0.1”
• Delete an existing local tag
– git tag -d tagname
• Send all tags to remote repository
– git push --tags
• Delete the tag of remote repository
– git push origin :refs/tags/tag_name
17
Branch• List local existing branches
– git branch
• List both local and remote branches
– git branch -a
• Create a new local branch and switch to it
– git checkout -b branch_name
• Create a new local branch starts from remote branch
– git checkout -b branch_name start_poing
– ex. git checkout -b development original/dev_branch
• Switch to an existing branch
– git checkout branch_name
• Delete an existing local branch
– git branch -d branch_name
• Send an branch to remote repository
– git push origin branch_name
• Delete the existing branch of remote repository
– git push origin :branch_name 18
Change remote HEAD to point to
another branch
• In remote git repository folder
– git symbolic-ref HEAD refs/heads/branch_name
– git update-server-info
19
Rename remote branch
• Rename the branch in the local repository
– git branch -m old_branch new_branch
• Remove the remote branch
– git push origin :old_branch
• Push the new local branch name to remote
– git push origin new_branch
20
Merge remote branch from local
commits
• git remote add remote_branch_name
remote_path
• git fetch remote_branch_name
• git cherry-pick -n commit_1 commit_2 …
• Ex.
– git remote add develop
gituser@192.168.1.1:/home/gitserver/my_project
.git
– git pull develop
– git cherry-pick abc def 21
Build Git Mirror Repository
• This method needs implementation of password-less
SSH login.
• In git mirror site:
– git clone --mirror original.address:original.git mirror.git
– cp mirror.git/hooks/post-
receive.sample mirror.git/hooks/post-receive
– echo “git push -q” >> mirror.git/hooks/post-receive
– chmod a+x mirror.git/hooks/post-receive
• In original git site:
– cp original.git/hooks/post-
receive.sample original.git/hooks/post-receive
– echo “ssh mirror.address 'cd original.git && git fetch -q”
>> original.git/hooks/post-receive
– chmod a+x original.git/hooks/post-receive
22
Add new branch for new codes to
exist remote repository
• In local new codes
– follow steps 1~4 on page 5
– rename default branch name
• git branch -m master new_branch
– add remote url
• git remote add remote_name remote_path
• Ex. git remote add origin
gituser@192.168.1.1:/home/gitserver/my_project.git
– push to remote repository
• git push remote_name new_branch
• Ex. git push origin new_branch 23
Git Web
• Install Git Web package
– sudo apt-get install gitweb
• Configure Git Web
– sudo vim /etc/gitweb.conf
– Root path of Git Web: $projectroot
• Restart Apache HTTP server
– sudo service apache2 restart
– http://localhost/gitweb
24
GUI tools for Ubuntu
• git cola
– sudo apt-get install git-cola
– commit, push, pull, diff, …
• gitk
– sudo apt-get install gitk
– Display all branches and tags: gitk --all
• tig - GUI in command line
– sudo apt-get install tig
– Display all branches and tags: tig --all
25
git cola
26
gitk --all
27
tig
• tig --all
• tig status
• tig
28
Other Resources
• Git Immersion
– http://gitimmersion.com/
• Git Pro (English)
• http://git-scm.com/book
• Git Pro ( 简体中文 )
• http://git-scm.com/book/zh
• Git Magic (English)
– http://www-cs-students.stanford.edu/~blynn/gitmagic/
• Git Magic ( 繁體中文 )
– http://www-cs-students.stanford.edu/~blynn/gitmagic/intl/zh_tw/
• Git 教育訓練課程投影片 (2012) form ihower
– http://ihower.tw/blog/archives/6696/
29

More Related Content

What's hot (20)

Gitting out of trouble
Gitting out of troubleGitting out of trouble
Gitting out of trouble
 
Now i git it!!!
Now i git it!!!Now i git it!!!
Now i git it!!!
 
Advanced Git Tutorial
Advanced Git TutorialAdvanced Git Tutorial
Advanced Git Tutorial
 
Git - Basic Crash Course
Git - Basic Crash CourseGit - Basic Crash Course
Git - Basic Crash Course
 
Git for beginners
Git for beginnersGit for beginners
Git for beginners
 
Presentacion git
Presentacion gitPresentacion git
Presentacion git
 
Git tutorial
Git tutorial Git tutorial
Git tutorial
 
Git
GitGit
Git
 
Git tutorial
Git tutorialGit tutorial
Git tutorial
 
Intro to Git DevOps Tally Presentation 101615
Intro to Git DevOps Tally Presentation 101615Intro to Git DevOps Tally Presentation 101615
Intro to Git DevOps Tally Presentation 101615
 
Introduction to Gitlab | Gitlab 101 | Training Session
Introduction to Gitlab | Gitlab 101 | Training SessionIntroduction to Gitlab | Gitlab 101 | Training Session
Introduction to Gitlab | Gitlab 101 | Training Session
 
Git Tech Talk
Git  Tech TalkGit  Tech Talk
Git Tech Talk
 
Advanced Git Presentation By Swawibe
Advanced Git Presentation By SwawibeAdvanced Git Presentation By Swawibe
Advanced Git Presentation By Swawibe
 
Git submodule
Git submoduleGit submodule
Git submodule
 
Learn Git Basics
Learn Git BasicsLearn Git Basics
Learn Git Basics
 
GIT | Distributed Version Control System
GIT | Distributed Version Control SystemGIT | Distributed Version Control System
GIT | Distributed Version Control System
 
Git in 10 minutes
Git in 10 minutesGit in 10 minutes
Git in 10 minutes
 
Git Basics at Rails Underground
Git Basics at Rails UndergroundGit Basics at Rails Underground
Git Basics at Rails Underground
 
Git One Day Training Notes
Git One Day Training NotesGit One Day Training Notes
Git One Day Training Notes
 
Git is my hero
Git is my heroGit is my hero
Git is my hero
 

Similar to Basic git

Git and Github workshop GDSC MLRITM
Git and Github  workshop GDSC MLRITMGit and Github  workshop GDSC MLRITM
Git and Github workshop GDSC MLRITMgdsc13
 
Git Tutorial I
Git Tutorial IGit Tutorial I
Git Tutorial IJim Yeh
 
Git session Dropsolid.com
Git session Dropsolid.comGit session Dropsolid.com
Git session Dropsolid.comdropsolid
 
git-and-bitbucket
git-and-bitbucketgit-and-bitbucket
git-and-bitbucketazwildcat
 
Git 入门与实践
Git 入门与实践Git 入门与实践
Git 入门与实践Terry Wang
 
Introduction to Git and Github
Introduction to Git and Github Introduction to Git and Github
Introduction to Git and Github Max Claus Nunes
 
Git 入门 与 实践
Git 入门 与 实践Git 入门 与 实践
Git 入门 与 实践Terry Wang
 
Git and github fundamental
Git and github fundamentalGit and github fundamental
Git and github fundamentalRajesh Kumar
 
11 git version control
11 git version control11 git version control
11 git version controlWasim Alatrash
 
Getting started with git
Getting started with gitGetting started with git
Getting started with gitPawan Kumar.v
 
Git Obstacle Course: Stop BASHing your head and break down the basics
Git Obstacle Course: Stop BASHing your head and break down the basicsGit Obstacle Course: Stop BASHing your head and break down the basics
Git Obstacle Course: Stop BASHing your head and break down the basicsChris Bohatka
 
Git workshop - University of Moratuwa, Department of Computer Science and Eng...
Git workshop - University of Moratuwa, Department of Computer Science and Eng...Git workshop - University of Moratuwa, Department of Computer Science and Eng...
Git workshop - University of Moratuwa, Department of Computer Science and Eng...WSO2
 
Git Magic: Versioning Files like a Boss
Git Magic: Versioning Files like a BossGit Magic: Versioning Files like a Boss
Git Magic: Versioning Files like a Bosstmacwilliam
 

Similar to Basic git (20)

Git and Github workshop GDSC MLRITM
Git and Github  workshop GDSC MLRITMGit and Github  workshop GDSC MLRITM
Git and Github workshop GDSC MLRITM
 
Git Tutorial I
Git Tutorial IGit Tutorial I
Git Tutorial I
 
Git session Dropsolid.com
Git session Dropsolid.comGit session Dropsolid.com
Git session Dropsolid.com
 
git-and-bitbucket
git-and-bitbucketgit-and-bitbucket
git-and-bitbucket
 
Git
GitGit
Git
 
Git 入门与实践
Git 入门与实践Git 入门与实践
Git 入门与实践
 
Introduction to Git and Github
Introduction to Git and Github Introduction to Git and Github
Introduction to Git and Github
 
Git 入门 与 实践
Git 入门 与 实践Git 入门 与 实践
Git 入门 与 实践
 
390a gitintro 12au
390a gitintro 12au390a gitintro 12au
390a gitintro 12au
 
Git training v10
Git training v10Git training v10
Git training v10
 
Git and github fundamental
Git and github fundamentalGit and github fundamental
Git and github fundamental
 
11 git version control
11 git version control11 git version control
11 git version control
 
sample.pptx
sample.pptxsample.pptx
sample.pptx
 
Getting started with git
Getting started with gitGetting started with git
Getting started with git
 
Git Obstacle Course: Stop BASHing your head and break down the basics
Git Obstacle Course: Stop BASHing your head and break down the basicsGit Obstacle Course: Stop BASHing your head and break down the basics
Git Obstacle Course: Stop BASHing your head and break down the basics
 
git.ppt.pdf
git.ppt.pdfgit.ppt.pdf
git.ppt.pdf
 
Git workshop - University of Moratuwa, Department of Computer Science and Eng...
Git workshop - University of Moratuwa, Department of Computer Science and Eng...Git workshop - University of Moratuwa, Department of Computer Science and Eng...
Git workshop - University of Moratuwa, Department of Computer Science and Eng...
 
Git Magic: Versioning Files like a Boss
Git Magic: Versioning Files like a BossGit Magic: Versioning Files like a Boss
Git Magic: Versioning Files like a Boss
 
Git basics
Git basicsGit basics
Git basics
 
Git presentation
Git presentationGit presentation
Git presentation
 

Recently uploaded

08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesSinan KOZAK
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...Neo4j
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...gurkirankumar98700
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 

Recently uploaded (20)

08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen Frames
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 

Basic git

  • 2. Why Git • Centralized Version Control System: svn – can’t develop without connection to VCS server – this is slow • Distributed Version Control System: git – develop locally without connection to VCS server – repository backup isn’t problem: every clone is also a backup • Git – fast – less-space for repository – cheap local branch 2
  • 3. Distributed VCS 3Computer A Computer B Repository ServerRepository Server Version 1 Version 2 Local RepositoryLocal Repository Version 1 Local RepositoryLocal Repository Version 2 FilesFiles FilesFiles pull push checkout commit …
  • 4. Install Git • In Ubuntu Linux – sudo apt-get install git • In Fedora Linux – sudo yum install git • In Windows – http://msysgit.github.com/ – http://code.google.com/p/tortoisegit/ • In Mac – http://code.google.com/p/git-osx-installer/ 4
  • 5. Configure Git • Configure the full name to be recorded in any new commit: git config --global user.name ”Full Name” • Configure email address to be recorded in any new commit: git config --global user.email ”user@email.com" • Always use colors in all git commands: git config --global color.ui true • Configure the editor to edit messages when commit or tag: git config --global core.editor vim • Specify how many context lines of diff should be displayed: git config --global gui.diffcontext 5 • Global configuration is in ~/.gitconfig • For more detailed, please reference “git help config” 5
  • 6. Initialize Local Repository 1. Enter the directory that you want to manage by git – Ex. cd project 1. git init 2. git add --all . (or git add --all --force . to alow adding otherwise ignored files) 3. git commit --message=“Init” 4. Change description of repository: echo “description” > .git/description 6
  • 7. Import Empty Folder to Repository • touch empty_path/.gitignore • Add .gitignore to every empty folder – find . ( -type d -empty ) -and ( -not -regex ./.git.* ) -exec touch {}/.gitignore ; • The content of .gitignore # Ignore everything in this directory * # Except this file !.gitignore 7
  • 8. Build Remote Repository 1. git clone --bare my_project my_project.git 2. Change description of repository: echo “description” > my_project.git/description 3. Copy my_project.git to remote site − Ex. Copy to /home/gitserver/my_project.git of remote site: scp -r my_project.git gituser@192.168.1.1:/home/gitserver 8
  • 9. Clone Repository from Remote Repository • git clone local_project_path • git clone user@remote.ip:project_path • git clone ssh://user@remote.ip:project_path • Ex. git clone gituser@192.168.1.1:/home/gitserver/my_pr oject.git 9
  • 10. Three areas 10 Working directory Staging area Repository git addgit add git commitgit commit git checkoutgit checkout
  • 11. Submit change to Local Repository • git add some_files_changed • git commit 11
  • 12. Update Local or Remote Repository • Update local repository from remote’s update – git pull – git fetch && git merge • Update remote repository from local’s changes – git push • Using “git cola” to push for specified branch 12
  • 13. Remove, move, or rename file • Delete file – git rm file_name • Move or rename file – git mv file_org file_mod 13
  • 14. Diff • Compare the working directory with a specified commit – git diff commit – Ex. git diff 1aj93u5 • Compare two of commits – git diff commit_1 commit_2 – Ex. git diff 1aj93u5 239ann • Compare the working directory with staged area – git diff --staged 14
  • 15. Clean • Remove all untracked directories and files – git clean -df • Remove all files included file list in .gitignore – git clean -x 15
  • 16. Reset • Back to specified commit – git reset commit – Ex. git reset 1aj93u5 • Keep modification in working tree – git reset HEAD^ • Keep modification in staging area – git reset HEAD^ --soft • Destroy all modification – git reset HEAD^ --hard • Using gitk 16
  • 17. Tag • List all tags – git tag • Add a new tag – git tag -a tagname -m “message for tag” – Ex. git tag -a v0.1 -m “this is v0.1” • Delete an existing local tag – git tag -d tagname • Send all tags to remote repository – git push --tags • Delete the tag of remote repository – git push origin :refs/tags/tag_name 17
  • 18. Branch• List local existing branches – git branch • List both local and remote branches – git branch -a • Create a new local branch and switch to it – git checkout -b branch_name • Create a new local branch starts from remote branch – git checkout -b branch_name start_poing – ex. git checkout -b development original/dev_branch • Switch to an existing branch – git checkout branch_name • Delete an existing local branch – git branch -d branch_name • Send an branch to remote repository – git push origin branch_name • Delete the existing branch of remote repository – git push origin :branch_name 18
  • 19. Change remote HEAD to point to another branch • In remote git repository folder – git symbolic-ref HEAD refs/heads/branch_name – git update-server-info 19
  • 20. Rename remote branch • Rename the branch in the local repository – git branch -m old_branch new_branch • Remove the remote branch – git push origin :old_branch • Push the new local branch name to remote – git push origin new_branch 20
  • 21. Merge remote branch from local commits • git remote add remote_branch_name remote_path • git fetch remote_branch_name • git cherry-pick -n commit_1 commit_2 … • Ex. – git remote add develop gituser@192.168.1.1:/home/gitserver/my_project .git – git pull develop – git cherry-pick abc def 21
  • 22. Build Git Mirror Repository • This method needs implementation of password-less SSH login. • In git mirror site: – git clone --mirror original.address:original.git mirror.git – cp mirror.git/hooks/post- receive.sample mirror.git/hooks/post-receive – echo “git push -q” >> mirror.git/hooks/post-receive – chmod a+x mirror.git/hooks/post-receive • In original git site: – cp original.git/hooks/post- receive.sample original.git/hooks/post-receive – echo “ssh mirror.address 'cd original.git && git fetch -q” >> original.git/hooks/post-receive – chmod a+x original.git/hooks/post-receive 22
  • 23. Add new branch for new codes to exist remote repository • In local new codes – follow steps 1~4 on page 5 – rename default branch name • git branch -m master new_branch – add remote url • git remote add remote_name remote_path • Ex. git remote add origin gituser@192.168.1.1:/home/gitserver/my_project.git – push to remote repository • git push remote_name new_branch • Ex. git push origin new_branch 23
  • 24. Git Web • Install Git Web package – sudo apt-get install gitweb • Configure Git Web – sudo vim /etc/gitweb.conf – Root path of Git Web: $projectroot • Restart Apache HTTP server – sudo service apache2 restart – http://localhost/gitweb 24
  • 25. GUI tools for Ubuntu • git cola – sudo apt-get install git-cola – commit, push, pull, diff, … • gitk – sudo apt-get install gitk – Display all branches and tags: gitk --all • tig - GUI in command line – sudo apt-get install tig – Display all branches and tags: tig --all 25
  • 28. tig • tig --all • tig status • tig 28
  • 29. Other Resources • Git Immersion – http://gitimmersion.com/ • Git Pro (English) • http://git-scm.com/book • Git Pro ( 简体中文 ) • http://git-scm.com/book/zh • Git Magic (English) – http://www-cs-students.stanford.edu/~blynn/gitmagic/ • Git Magic ( 繁體中文 ) – http://www-cs-students.stanford.edu/~blynn/gitmagic/intl/zh_tw/ • Git 教育訓練課程投影片 (2012) form ihower – http://ihower.tw/blog/archives/6696/ 29