SlideShare a Scribd company logo
101502520 過 

2014/08/20
Git ⼰己
2014/12/20
⼰己 ⽅方
他 ...	
• 得⼀一
要⽅方
• 們 是
⽅方
• 是 是 還
他 ...
• ⽅方
• ⽅方
• 是 還
⼰己 就 ⽅方
Git 版本控制就像是⼀一種⾼高級的存檔機制。
開發到⼀一個段落,就可以如存檔⼀一般,提交這次的檔案變動,
並附上提交訊息。
⼰己
• 下 

• 下 

• 下 他 

• 了 他 點

• 果 

• 新 你 你
透過 Git,我們還可以⼗十分清楚
專案整體、各個分⽀支的發展狀況
例如:
哪個分⽀支合併了哪個分⽀支
哪個夥伴最近做了什麼事情
除此之外,透過這個提交機制,
Git 可以:
⽐比較檔案變動的差異
回朔到先前的版本
創⽴立新的分⽀支,並輕鬆合併
Git 這
• 這
• git config --global user.name “Your Name”
• git config --global user.email “your@email.com”
• git config --list 在 這 都
• ⽤用⼼心 Pro Git - 這 Git
Git
• 他 下 無 git init git repository (新⾃自 .git 種)
• .git 種 能 出
• .git/HEAD
• .git/refs/
• .git/HEAD 樣很 你
• .git/refs 種 他 你 tag
.git/refs/heads/master master 你
SHA
• 能 git checkout 每 reset 和
Git ⼤大更
• working directory
.git 種
現以 IDE
⼤大更 

• git directory(repository) .git
種 git 下


• staging area 沒 三
⼤大更 git
commit 下
時 他
他 staging
area 機 

• git repository 下
working directory
Git 他 來
在 來 git status
• git status 和 來

• 做 

• 你 master

• master 那origin/master
下 之

• 他 ⼤大 

• staging area commit 他

• 們 staging
area 他

• git家回 他

• git status -h 在
下 git add & git commit
• 他( ) staging area
• git add <file/directory> <file/directory> … # 他 種
• git add -u # 家回分 他
• git add -A # 家回分 家回 他
• staging area 他 commit
• git commit
• git commit -m “commit message”
他 git rm
• git 家回 他 git repository
git rm
• git rm <file> # 他 working directory
staging area
• git rm <file> --cached # staging area
他 working directory
他 家回
什 他 .gitignore
• 他 我 git 家回 做 IDE 這 每後
真 這 ⼜又 真 他 對
.gitignore 他 這
• 這 更 什 沒
• git config --global core.excludesfile ‘~/.gitignore'
• ⽤用⼼心 Pro Git - ⼜又#什 他
⾃自 你 git branch
• ⾃自 你
你 分地
機 你
• git branch <name> 最 ⾃自 你
git checkout <name> 不到 你
• git checkout -b <name> ⾃自 你
不到
• git branch -a 後 那 你
• git branch -h
新⾃自能 git tag
• 能 (lightweight) 後然
(annotated) 

• 能 能 

• 後然 能 沒 Git (麼
) 

• ⽇日 想 新 後然 能
會 

• git tag -a <name> #新⾃自後然 能 

• git tag <name> #新⾃自 能 

• 能 個 能
v1.0

• ⽤用⼼心 Pro Git - 能
能 你
在 下 git log & git diff
• git diff 在 staging area 他
• git diff --cached 在 他 後 staging area
• git difftool 點 得⼀一在 他
• git log 在 branch 下
• git log -p 在 branch 下 後
• git log --graph 在 commit tree
• git blame <file> 在 他 下
可以查看 staging area 的檔案變動
動 git stash
• 你
git stash 動
• git stash list 在 動
• git stash apply 動
• git stash drop 動
• git stash pop
• ⽤用⼼心 Pro Git - Stashing
git cherry-pick
• git cherry-pick <SHA> <SAH>…
• cherry-pick
commit
HEAD 

• cherry-pick
conflict 就 中
他 staging git
cherry-pick --continue
--abort
不到 你 git checkout
• git checkout <branch/SHA> HEAD (.git/HEAD)
最 working directory
不到 你 commit tree
• 做 git checkout master .git/HEAD
ref: refs/heads/master
• git checkout <SHA> HEAD
detached HEAD 來
你 ⼦子 SHA git branch
git checkout -b dangling commit 新⾃自
你
開 下 git reset
• git reset <SHA> 你 HEAD (.git/refs/heads/
<branch>) 這 detached HEAD 來沒
這 .git/HEAD
• git reset HEAD~2 你
開 unstaged 來
們 對 git add staging area
• --hard 沒 會 working directory
• git reset 開 開
reset reflog 在 開 SHA
git reset <SHA> --hard
git checkout git reset 點
git reset & checkout
• 三 他 兩 reset checkout
HEAD 你 HEAD staging 他
staging 他 git status
了
果 下 git revert
• git revert 果 commit 果
做 下 A->B->C
git revert B A->B->C->D
revert
• git revert HEAD~2 果
• git revert conflict 中 他
git add staging 對 git revert --continue
git revert --abort revert
git revert git reset 點
去發 git rebase
• rebase 你 機 你
你 你
你 rebase 中 就 給好只
你 你 機 中
• rebase 就
git rebase -i HEAD~3 情 ⼀一
情 ⼀一 每
機每 知每 多們
• ⽤用⼼心 Pro Git - 去發
git rebase 了道
git commit --amend
• 對 git rebase -i HEAD~ git commit --amend
下
• git commit --amend staging area
機
沒 staging area
• git rebase 多 git commit --amend ⼈人
SHA 都
那⽽而⼜又 去發
好上
git reflog & git fsck 下
• reset, rebase, commit --amend 和 下
⼿手 ⽅方 Git
• git HEAD 會 成下 git reflog git log -g
在 HEAD 下
• 對 git reflog 在 SHA git reset --
hard <SHA> git merge <SHA> 機
git branch <name> <SHA> ⾃自 下 你
• git reflog SHA git fsck --
full 在 dangling commit SHA 對
• ⽤用⼼心 Pro Git - 多
機 你 git merge
• 你
git merge
你 機 你
• 機
--no-ff
fast forward
對
merge commit
你 機 你
你
新 得 git flow
• git flow git 得
如 道 裡 得 

• 你

• master: 有 來

• develop: 你

• 你 你

• feature: develop
你 機 develop

• release: 看 release
們 bugs develop
機 master develop

• hotfix: 們 bug
master 機 master
develop
那⽽而⼜又 git remote
• git repository 那⽽而⼜又
給好
⽣生 Github Bitbucket 為
三好 這 Gitlab
• git remote -v 他這 那⽽而⼜又
• git remote add <name> <url> 那⽽而⼜又
• git remote -h 在
那 git push
• 那⽽而⼜又
• git push -u <remote> <branch>
• git push -u 你 那 你這
你家回 upstream
• 做 git push -u origin develop develop origin
develop 這 家回 那 origin/develop
• 你 那 做 rebase
push 那 -f 那 你
• 做 git push -u gitlab feature/foo -f
• git push -h 在
那⽽而⼜又 git clone
• git clone <url>
• git clone 那 repository 後
git 下 這 remote
• clone 對 git push
那
• clone git checkout <remote-branch> git
新⾃自 你 remote 你也 這
家回 upstream
• git checkout -b <branch> --track <remote>/<branch>
git fetch & git pull
• git fetch <remote> 那 你
你
• git pull git fetch git merge
git fetch 那家回 你 機
你
• 你 那 你
機 ⼈人 merge commit 新
git pull --rebase rebase merge
時
• git 的 時 道⼩小 做 SHA
• “~” “^” 時 做
• HEAD^2 merge commit
• HEAD~3
• HEAD@{2} HEAD
• 對 “A..B” 時 B 你 A 你
• 對 “A…B” 時 B 你 A 你
• ⽤用⼼心 Pro Git - 時們
次 可
• Git
• Git
• Pro Git
• GitHub Cheat Sheet PDF
• Git Concepts Simplified by Sitaram Chamarty

More Related Content

PPTX
工程師必備第一工具 - Git
PDF
初心者 Git 上手攻略
PDF
Git 版本控制系統 -- 從微觀到宏觀
PDF
Git Tutorial 教學
PDF
Git由超淺入超深
PDF
Git 實務圖解
PDF
ノンプログラマでも今日から使える「Git」でバージョン管理
PDF
15分でわかるGit入門
工程師必備第一工具 - Git
初心者 Git 上手攻略
Git 版本控制系統 -- 從微觀到宏觀
Git Tutorial 教學
Git由超淺入超深
Git 實務圖解
ノンプログラマでも今日から使える「Git」でバージョン管理
15分でわかるGit入門

What's hot (20)

PDF
寫給大家的 Git 教學
PDF
Gitのよく使うコマンド
PPTX
Git基礎介紹
PDF
いつやるの?Git入門
PDF
やりなおせる Git 入門
PDF
Git and git flow
PDF
A Practical Introduction to git
PDF
はじめてのGit forデザイナー&コーダー
PPTX
git merge 與 rebase 的觀念與實務應用
PDF
Git Series. Episode 3. Git Flow and Github-Flow
PDF
Git training v10
PDF
Intro to Git and GitHub
PPTX
ブランチを綺麗に保ち、どうやって本番アップするのか
PDF
いつやるの?Git入門 v1.1.0
PPTX
Git - Basic Crash Course
PDF
5分で分かるgitのrefspec
PDF
うちのRedmineの使い方(2)
PPTX
Introduction to Gitlab | Gitlab 101 | Training Session
PDF
Git and github 101
PDF
Git slides
寫給大家的 Git 教學
Gitのよく使うコマンド
Git基礎介紹
いつやるの?Git入門
やりなおせる Git 入門
Git and git flow
A Practical Introduction to git
はじめてのGit forデザイナー&コーダー
git merge 與 rebase 的觀念與實務應用
Git Series. Episode 3. Git Flow and Github-Flow
Git training v10
Intro to Git and GitHub
ブランチを綺麗に保ち、どうやって本番アップするのか
いつやるの?Git入門 v1.1.0
Git - Basic Crash Course
5分で分かるgitのrefspec
うちのRedmineの使い方(2)
Introduction to Gitlab | Gitlab 101 | Training Session
Git and github 101
Git slides
Ad

Viewers also liked (20)

PDF
沒有 GUI 的 Git
PPTX
Visual Studio 2015 與 Git 開發實戰
PDF
Git與source tree 基礎教學
PPTX
簡介 GitHub 平台
PDF
MS SQL 2012 安裝與基本使用教學
PPTX
SQL Server 資料庫版本控管
PDF
Git and Github
PPTX
Linux 的檔案系統格式介紹
PDF
Frontend django, Django Web 前端探索
PPTX
100個網站規劃必備的知識 整合:使用者體驗設計分享
PDF
PDF
Docker 初探,實驗室中的運貨鯨
PDF
淺談 Startup 公司的軟體開發流程 v2
PDF
提到 DevOps 到底在談些什麼玩意兒?
PDF
進階主題
PPTX
Introduction to Git/Github - A beginner's guide
PDF
Git 101: Git and GitHub for Beginners
PPTX
電子商務報告 Fb api使用與資料庫安全
PPTX
Github初上手教學
PDF
HITCON GIRLS_惡意程式分析介紹_in 成功大學_by Turkey_2016.04.28
沒有 GUI 的 Git
Visual Studio 2015 與 Git 開發實戰
Git與source tree 基礎教學
簡介 GitHub 平台
MS SQL 2012 安裝與基本使用教學
SQL Server 資料庫版本控管
Git and Github
Linux 的檔案系統格式介紹
Frontend django, Django Web 前端探索
100個網站規劃必備的知識 整合:使用者體驗設計分享
Docker 初探,實驗室中的運貨鯨
淺談 Startup 公司的軟體開發流程 v2
提到 DevOps 到底在談些什麼玩意兒?
進階主題
Introduction to Git/Github - A beginner's guide
Git 101: Git and GitHub for Beginners
電子商務報告 Fb api使用與資料庫安全
Github初上手教學
HITCON GIRLS_惡意程式分析介紹_in 成功大學_by Turkey_2016.04.28
Ad

Similar to Git 版本控制 (使用教學) (20)

PPT
Learn git
PDF
Git tutorial for windows user (給 Windows user 的 Git 教學)
PPT
Git 超簡單學習懶人包(軟體程式版本控管系統)
PPTX
Git 使用介绍
PDF
為自己學 Git
PDF
COSCUP 2015 開源之道-Git工作坊教學簡報
PPTX
Git & git flow
PPTX
Git教學
PDF
Git 入门实战
PDF
Git使用进阶
PPTX
Git原理与实战 201607
PDF
Introduction to git
PPTX
Git introduction
ODP
Git 程式碼版本控制軟體介紹
PPT
Github简介及实用入门
PPTX
Git Flow 管理
PPTX
Git and git hub
PPTX
Git flow 與團隊合作
PPTX
Android 程式設計(4)
PDF
Code review on github training ( beginner )
Learn git
Git tutorial for windows user (給 Windows user 的 Git 教學)
Git 超簡單學習懶人包(軟體程式版本控管系統)
Git 使用介绍
為自己學 Git
COSCUP 2015 開源之道-Git工作坊教學簡報
Git & git flow
Git教學
Git 入门实战
Git使用进阶
Git原理与实战 201607
Introduction to git
Git introduction
Git 程式碼版本控制軟體介紹
Github简介及实用入门
Git Flow 管理
Git and git hub
Git flow 與團隊合作
Android 程式設計(4)
Code review on github training ( beginner )

More from Jui An Huang (黃瑞安) (7)

PDF
Golang PostgreSQL Libraries Comparasion With Wireshark
PDF
Scaling Offline Database Usage On GCP @ Dcard
PDF
Www 2017第二次新生訓練:系統設計
PDF
Www 2017第一次新生訓練:系統分析
PDF
Www 2017第三次新生訓練:transaction, migration, worker
PDF
Elasitcsearch + Logstash + Kibana 日誌監控
PDF
Elasticsearch 簡介
Golang PostgreSQL Libraries Comparasion With Wireshark
Scaling Offline Database Usage On GCP @ Dcard
Www 2017第二次新生訓練:系統設計
Www 2017第一次新生訓練:系統分析
Www 2017第三次新生訓練:transaction, migration, worker
Elasitcsearch + Logstash + Kibana 日誌監控
Elasticsearch 簡介

Git 版本控制 (使用教學)

  • 1. 101502520 過 2014/08/20 Git ⼰己 2014/12/20
  • 3. 他 ... • 得⼀一 要⽅方 • 們 是 ⽅方 • 是 是 還
  • 4. 他 ... • ⽅方 • ⽅方 • 是 還
  • 5. ⼰己 就 ⽅方 Git 版本控制就像是⼀一種⾼高級的存檔機制。 開發到⼀一個段落,就可以如存檔⼀一般,提交這次的檔案變動, 並附上提交訊息。
  • 6. ⼰己 • 下 • 下 • 下 他 • 了 他 點 • 果 • 新 你 你 透過 Git,我們還可以⼗十分清楚 專案整體、各個分⽀支的發展狀況 例如: 哪個分⽀支合併了哪個分⽀支 哪個夥伴最近做了什麼事情 除此之外,透過這個提交機制, Git 可以: ⽐比較檔案變動的差異 回朔到先前的版本 創⽴立新的分⽀支,並輕鬆合併
  • 7. Git 這 • 這 • git config --global user.name “Your Name” • git config --global user.email “your@email.com” • git config --list 在 這 都 • ⽤用⼼心 Pro Git - 這 Git
  • 8. Git • 他 下 無 git init git repository (新⾃自 .git 種) • .git 種 能 出 • .git/HEAD • .git/refs/ • .git/HEAD 樣很 你 • .git/refs 種 他 你 tag .git/refs/heads/master master 你 SHA • 能 git checkout 每 reset 和
  • 9. Git ⼤大更 • working directory .git 種 現以 IDE ⼤大更 • git directory(repository) .git 種 git 下 • staging area 沒 三 ⼤大更 git commit 下 時 他 他 staging area 機 • git repository 下 working directory
  • 11. 在 來 git status • git status 和 來 • 做 • 你 master • master 那origin/master 下 之 • 他 ⼤大 • staging area commit 他 • 們 staging area 他 • git家回 他 • git status -h 在
  • 12. 下 git add & git commit • 他( ) staging area • git add <file/directory> <file/directory> … # 他 種 • git add -u # 家回分 他 • git add -A # 家回分 家回 他 • staging area 他 commit • git commit • git commit -m “commit message”
  • 13. 他 git rm • git 家回 他 git repository git rm • git rm <file> # 他 working directory staging area • git rm <file> --cached # staging area 他 working directory 他 家回
  • 14. 什 他 .gitignore • 他 我 git 家回 做 IDE 這 每後 真 這 ⼜又 真 他 對 .gitignore 他 這 • 這 更 什 沒 • git config --global core.excludesfile ‘~/.gitignore' • ⽤用⼼心 Pro Git - ⼜又#什 他
  • 15. ⾃自 你 git branch • ⾃自 你 你 分地 機 你 • git branch <name> 最 ⾃自 你 git checkout <name> 不到 你 • git checkout -b <name> ⾃自 你 不到 • git branch -a 後 那 你 • git branch -h
  • 16. 新⾃自能 git tag • 能 (lightweight) 後然 (annotated) • 能 能 • 後然 能 沒 Git (麼 ) • ⽇日 想 新 後然 能 會 • git tag -a <name> #新⾃自後然 能 • git tag <name> #新⾃自 能 • 能 個 能 v1.0 • ⽤用⼼心 Pro Git - 能 能 你
  • 17. 在 下 git log & git diff • git diff 在 staging area 他 • git diff --cached 在 他 後 staging area • git difftool 點 得⼀一在 他 • git log 在 branch 下 • git log -p 在 branch 下 後 • git log --graph 在 commit tree • git blame <file> 在 他 下 可以查看 staging area 的檔案變動
  • 18. 動 git stash • 你 git stash 動 • git stash list 在 動 • git stash apply 動 • git stash drop 動 • git stash pop • ⽤用⼼心 Pro Git - Stashing
  • 19. git cherry-pick • git cherry-pick <SHA> <SAH>… • cherry-pick commit HEAD • cherry-pick conflict 就 中 他 staging git cherry-pick --continue --abort
  • 20. 不到 你 git checkout • git checkout <branch/SHA> HEAD (.git/HEAD) 最 working directory 不到 你 commit tree • 做 git checkout master .git/HEAD ref: refs/heads/master • git checkout <SHA> HEAD detached HEAD 來 你 ⼦子 SHA git branch git checkout -b dangling commit 新⾃自 你
  • 21. 開 下 git reset • git reset <SHA> 你 HEAD (.git/refs/heads/ <branch>) 這 detached HEAD 來沒 這 .git/HEAD • git reset HEAD~2 你 開 unstaged 來 們 對 git add staging area • --hard 沒 會 working directory • git reset 開 開 reset reflog 在 開 SHA git reset <SHA> --hard
  • 22. git checkout git reset 點
  • 23. git reset & checkout • 三 他 兩 reset checkout HEAD 你 HEAD staging 他 staging 他 git status 了
  • 24. 果 下 git revert • git revert 果 commit 果 做 下 A->B->C git revert B A->B->C->D revert • git revert HEAD~2 果 • git revert conflict 中 他 git add staging 對 git revert --continue git revert --abort revert
  • 25. git revert git reset 點
  • 26. 去發 git rebase • rebase 你 機 你 你 你 你 rebase 中 就 給好只 你 你 機 中 • rebase 就 git rebase -i HEAD~3 情 ⼀一 情 ⼀一 每 機每 知每 多們 • ⽤用⼼心 Pro Git - 去發
  • 28. git commit --amend • 對 git rebase -i HEAD~ git commit --amend 下 • git commit --amend staging area 機 沒 staging area • git rebase 多 git commit --amend ⼈人 SHA 都 那⽽而⼜又 去發 好上
  • 29. git reflog & git fsck 下 • reset, rebase, commit --amend 和 下 ⼿手 ⽅方 Git • git HEAD 會 成下 git reflog git log -g 在 HEAD 下 • 對 git reflog 在 SHA git reset -- hard <SHA> git merge <SHA> 機 git branch <name> <SHA> ⾃自 下 你 • git reflog SHA git fsck -- full 在 dangling commit SHA 對 • ⽤用⼼心 Pro Git - 多
  • 30. 機 你 git merge • 你 git merge 你 機 你 • 機 --no-ff fast forward 對 merge commit 你 機 你 你
  • 31. 新 得 git flow • git flow git 得 如 道 裡 得 • 你 • master: 有 來 • develop: 你 • 你 你 • feature: develop 你 機 develop • release: 看 release 們 bugs develop 機 master develop • hotfix: 們 bug master 機 master develop
  • 32. 那⽽而⼜又 git remote • git repository 那⽽而⼜又 給好 ⽣生 Github Bitbucket 為 三好 這 Gitlab • git remote -v 他這 那⽽而⼜又 • git remote add <name> <url> 那⽽而⼜又 • git remote -h 在
  • 33. 那 git push • 那⽽而⼜又 • git push -u <remote> <branch> • git push -u 你 那 你這 你家回 upstream • 做 git push -u origin develop develop origin develop 這 家回 那 origin/develop • 你 那 做 rebase push 那 -f 那 你 • 做 git push -u gitlab feature/foo -f • git push -h 在
  • 34. 那⽽而⼜又 git clone • git clone <url> • git clone 那 repository 後 git 下 這 remote • clone 對 git push 那 • clone git checkout <remote-branch> git 新⾃自 你 remote 你也 這 家回 upstream • git checkout -b <branch> --track <remote>/<branch>
  • 35. git fetch & git pull • git fetch <remote> 那 你 你 • git pull git fetch git merge git fetch 那家回 你 機 你 • 你 那 你 機 ⼈人 merge commit 新 git pull --rebase rebase merge
  • 36. 時 • git 的 時 道⼩小 做 SHA • “~” “^” 時 做 • HEAD^2 merge commit • HEAD~3 • HEAD@{2} HEAD • 對 “A..B” 時 B 你 A 你 • 對 “A…B” 時 B 你 A 你 • ⽤用⼼心 Pro Git - 時們
  • 37. 次 可 • Git • Git • Pro Git • GitHub Cheat Sheet PDF • Git Concepts Simplified by Sitaram Chamarty