git Yeast Liu 2014.04.01 @ NISRA
git
Yeast Liu2014.04.01 @ NISRA
Outline
• About Version Control• Hello, Git! • Git GUI• Git Branching
Outline
• About Version Control• What is “Version Control” ?• Version Control Systems• Local Version Control Systems• Centralized Version Control Systems• Distributed Version Control Systems
• Hello, Git!• Git GUI• Git Branching
About Version Control• What is version control ?
• Local Version Control Systems• 在 local 各自建立版本資料庫• 協作開發困難
• Centralized Version Control Systems• 利用一台中央 Server 儲存所有版本紀錄• SVN ( Subversion )• Server 負擔大
• Distributed Version Control Systems• 每個 local 都有一個版本資料庫• git
Local Version Control Systems
commit
Centralized Version Control Systems
commit
Distributed Version Control Systems
commit
push/pull
Outline
• About Version Control• Hello, Git! • What is Git?• Getting Started• Git Basics• Git and Github
• Git GUI• Git Branching
What is Git?
• A distributed version control system.• Designed and developed by Linus Torvalds.• A distributed revision control and source code
management system.
What is Git? – Other VCS
• Store data as changes.
What is Git? – Git VCS
• DAG ( Directed Acyclic Graph): Store data as snapshots.
Outline
• About Version Control• Hello, Git!• What is Git?• Getting Started• Installing Git• First-Time Git Setup• Get Help
• Git Basics• Git and Github
• Git GUI• Git Branching
Getting Started : Installing Git
• Install git on Windows
• Install git on Ubuntu
$ sudo apt-get install git
http://msysgit.github.io/
Getting Started : Git Setup
$ git config --global user.name “Your Name”
• First-Time git setup
$ git config --global user.email “Your Email”
Getting Started : Git Setup
$ cat ~/.gitconfig or $ vim ~/.gitconfig or
$ git config –list
• Check your git configuration.• ~/.gitconfig • 是隱藏在 home folder 中的設定檔
Getting Started : Getting Help
$ git help <command> or$ git <command> --help
• Get the manual page for help.
$ git help config
Outline
• About Version Control• Hello, Git!• What is Git?• Getting Started• Git Basics• Git Repository• Commands
• Git and Github• Git GUI• Git Branching
Getting Basics : Git Repository (Repo)
• Repositories
• 一個儲存專案中所有修訂資訊、歷史紀錄的資料庫• .git 是一個隱藏目錄 , 存放 Repo 所需要的資訊 .
Getting Basics : Git Repository (Repo)
Git Basics : Git Repository (Repo)
• Git Repo : 一個被 Git 追蹤的專案• Repo stored the collection of files and their
complete history.
Git Basics : Git Repository (Repo)
3
3
Outline• About Version Control• Hello, Git!• What is Git?• Getting Started• Git Basics• Git Repository• Commands
• Git and Github• Git GUI• Git Branching
Git Basics : Commands
• Create a empty directory.
• Create git repository.
$ mkdir hellogit$ cd hellogit
$ git init
Git Basics : Commands
• Create content
• Show content
$ touch data.txt$ echo “content” > data.txt$ echo “concat” >> data.txt
$ cat data.txt
Git Basics : Commands
• See the current status.
$ git status
Git Basics : Commands
• Add file to the staging area.
$ git add data.txt$ git add .
Git Basics : Commands
• Remove file to the staging area. $ git rm data.txt
Git Basics : Commands
• Commit file to the local repository.
$ git commit –m “Your commit msg”
Git Basics : Commands
• Show git log for the change.
$ git log
Outline
• About Version Control• Hello, Git!• What is Git?• Getting Started• Git Basics• Git and Github
• Git GUI• Git Branching
• Make a new repository on GitHub.
Github : Git and Github
• Make a new repository on GitHub.
Github : Git and Github
“Your Repo Name”
• Creates a remote named “origin” pointing at your github repo.
Github : Git and Github
$ git remote add origin “URL”
“ URL ”
• Push your commit.
Github : Git and Github
$ git push origin master
• Push your commit.
Github : Git and Github
$ git push origin master
• Push your commit.
Github : Git and Github
Outline
• About Version Control• Hello, Git!• Git GUI• Git Branching
Git GUI
• Graphical Git Client for Linux• Git-cola• Gitg• SmartGit• Giggle• Git Gui• qGit• gitk
Git GUI
• Gitk
Outline
• About Version Control• Hello, Git!• Git GUI• Git Branching• Data Structures• About Branching• Merge Branches
Git Branching : Data Structures
紀錄檔案內容
檔案目錄紀錄訊息
Git Branching : Data Structures
• Single commit repository data.
Git Branching : Data Structures
• Git object data for multiple commits.
Outline
• About Version Control• Hello, Git!• Git GUI• Git Branching• Data Structures• About Branching• Merge Branches
Git Branching: About Branching
• Create a new branch.
$ git branch testing “ Your branch name”
Git Branching: About Branching
• Switch to an existing branch.
$ git checkout testing “ Your branch name”
Git Branching: About Branching
• Switch to an existing branch.
$ git checkout testing “ Your branch name”
Outline
• About Version Control• Hello, Git!• Git GUI• Git Branching• Data Structures• About Branching• Merge Branches
Git Branching: Merge Branches
$ git checkout –b iss53 “ Your branch name”
Git Branching: Merge Branches
index.html
$ vim index.html$ git add
$ git commit –m “issue 53”
index.html
index.html
$ git checkout master$ git checkout –b hotfix
$ vim index.html$ vim add
$ git commit –m “hotfix”
index.html
index.html
$ git checkout master$ git merge hotfix
$ git branch –d hotfix
$ git checkout master$ git merge iss53
master and iss53 : no common ancestors
master and iss53 : no common ancestors
Reference
• Git Documentation• http://git-scm.com/documentation
• 版本控制系統 Git 精要 | ihower 的 Git 教室• http://ihower.tw/git/remote.html
• 寫給大家的 Git 教學• http://www.slideshare.net/littlebtc/git-5528339
Q & A 愚人節快樂 :)