SlideShare a Scribd company logo
1 of 20
Download to read offline
Git 入门与实践
梁超
     大纲
• 关于版本控制      
• 入门操作及原理  
• 分支操作及原理  
• 其它常用命令  
• 更深入的理解  
• 团队场景演示  
• 总结回顾
关于版本控制
01
     关于版本控制  
                 
VS
集中式版本控制与分布式版本控制的区别  
Git的诞生历史
集中式版本控制
分布式版本控制
集中式版本控制
优点:统一的集中式版本仓库,可以协作管理
缺点:单点故障,有丢失数据风险,不能离开网络,每次获取版本信息都要通过网络,速度不够快
!
分布式版本控制
优点:完整镜像克隆,数据安全性高。几乎所有操作都是本地执行,不用联网,操作速度快
入门操作及原理
02
     创建第一个项目  
                 1.基础配置  
2.创建一个版本库  
3.添加修改文件并提交
VS
基本步骤:
1. 在工作目录中修改某些文件。
2. 对修改后的文件进行快照,然后保存到暂存区域。
3. 提交更新,将保存在暂存区域的文件快照永久转储到 Git 目录中。
     基础操作浅析  
                 1. 文件的状态变换 4.撤销修改
2. diff文件的修改 5.master和HEAD的含义
3. commit提交注释的规范性 6.查看日志
stage
work
ed489a47c3 b325c c10b9 da985
develop
git diff develop
master
HEAD
git diff
git diff HEAD
git diff —staged
git diff da985 b325c
…
stage
work
HEAD
git reset —files
git checkout —files
git checkout HEAD —files
stage
work
ed489a47c3 b325c c10b9 da985
develop
—hard
master
HEAD
not —soft
git reset HEAD~3
…
master
HEAD
分支操作及原理
03
     本地分支的使用  
                 
分支基础操作: 创建 - 查看 - 切换 - 删除 - 合并 - 衍合
1.每次提交master都向前移动一步 2.新建一个分支并切换到分支HEAD指向 3. 对dev分支进行修改
4. 将master和dev进行了快速合并5. 删除dev分支就留下了干净的master
     提交对象的状态  
                 
     合并与衍合  
                 
VS      
合并
衍合
进行线上分支合并时,一律使用 git merge —no-ff,保留合并时间戳
rebase的作用是为了构造干净的提交历史,一般用于帮助别人维护项目,将分支信息合并权利交给主开发者用,把rebase当成一种在推送之前清理提交历史的手段
******** 一定不要在push到远程以后进行rebase,这样会使开发历史变得混乱不堪
     远程分支  
                 
远程分支是对远程仓库中的分支的索引,它们是一些无法移动的本地分支;只有在 Git 进行网
络交互时才会更新。远程分支就像是书签,提醒着你上次连接远程仓库时上面各分支的位置
     团队场景演示  
                 
!
场景:开发一个换肤项目
项目周期:两周
参与者:多人合作
!
git push origin master:theme	
git co theme	
git co master;git pull	
git co theme; git rebase master	
git co master; git merge theme	
git push	
git push origin :theme	
git br -d theme | git push origin master:theme	
git remote show origin	
git remote prune origin 	
!
1.比较流行的分支模型  
2.工作场景的灵活发挥
其它常用命令
04
     其它常用操作  
                 
・ 临时存储Stashing
・ 重写历史
・ 里程碑Tag
・ 忽略特殊文件
更深入的理解
05
     底层原理  
                 
Git本质是一套内容寻址系统
整个核心在.git目录中
Git存储对象原理
!
几个有用命令:
git hash-object -w 存储数据对象
git cat-file -p 查看数据对象
git cat-file -t 查看数据对象类型
总结
06
     推荐资源  
                 
Pro Git中文版
廖雪峰教程
Git简易指南
图解Git
Git Community Book 中文版
Git权威指南
Git Cheatsheet 中文版
一个成功的分支模型
命令行工具Tig
客户端工具SourceTree
QA

More Related Content

What's hot

Git與source tree 基礎教學
Git與source tree 基礎教學Git與source tree 基礎教學
Git與source tree 基礎教學Duncan Chen
 
Git & Sourcetree 介紹
Git & Sourcetree 介紹Git & Sourcetree 介紹
Git & Sourcetree 介紹Adison wu
 
Git Flow 管理
Git Flow 管理Git Flow 管理
Git Flow 管理Pu Lee
 
VSCode Remote Development
VSCode Remote DevelopmentVSCode Remote Development
VSCode Remote DevelopmentPhilip Zheng
 
First meetingwithgit
First meetingwithgitFirst meetingwithgit
First meetingwithgitRhythm Sun
 
寫給大家的 Git 教學
寫給大家的 Git 教學寫給大家的 Git 教學
寫給大家的 Git 教學littlebtc
 
開發用不著打一架 - 分散式版本控制 Git
開發用不著打一架 - 分散式版本控制 Git開發用不著打一架 - 分散式版本控制 Git
開發用不著打一架 - 分散式版本控制 GitCalvin Huang
 
VSCode Remote Development 介紹
VSCode Remote Development 介紹VSCode Remote Development 介紹
VSCode Remote Development 介紹Philip Zheng
 
Git&Github Tutorial
Git&Github TutorialGit&Github Tutorial
Git&Github TutorialTing Wen Su
 
git merge 與 rebase 的觀念與實務應用
git merge 與 rebase 的觀念與實務應用git merge 與 rebase 的觀念與實務應用
git merge 與 rebase 的觀念與實務應用Will Huang
 
A successful git branching model 導讀
A successful git branching model 導讀A successful git branching model 導讀
A successful git branching model 導讀Wen Liao
 
與大師對談: 轉移到微服務架構必經之路 ~ 系統與資料庫重構
與大師對談: 轉移到微服務架構必經之路~ 系統與資料庫重構與大師對談: 轉移到微服務架構必經之路~ 系統與資料庫重構
與大師對談: 轉移到微服務架構必經之路 ~ 系統與資料庫重構Andrew Wu
 
Git内部培训文档
Git内部培训文档Git内部培训文档
Git内部培训文档superwen
 
Xcode 的 git 版本管理
Xcode 的 git 版本管理Xcode 的 git 版本管理
Xcode 的 git 版本管理彼得潘 Pan
 
twMVC#36讓 Exceptionless 存管你的 Log
twMVC#36讓 Exceptionless 存管你的 LogtwMVC#36讓 Exceptionless 存管你的 Log
twMVC#36讓 Exceptionless 存管你的 LogtwMVC
 

What's hot (16)

Git與source tree 基礎教學
Git與source tree 基礎教學Git與source tree 基礎教學
Git與source tree 基礎教學
 
Git & Sourcetree 介紹
Git & Sourcetree 介紹Git & Sourcetree 介紹
Git & Sourcetree 介紹
 
Git Flow 管理
Git Flow 管理Git Flow 管理
Git Flow 管理
 
Git
GitGit
Git
 
VSCode Remote Development
VSCode Remote DevelopmentVSCode Remote Development
VSCode Remote Development
 
First meetingwithgit
First meetingwithgitFirst meetingwithgit
First meetingwithgit
 
寫給大家的 Git 教學
寫給大家的 Git 教學寫給大家的 Git 教學
寫給大家的 Git 教學
 
開發用不著打一架 - 分散式版本控制 Git
開發用不著打一架 - 分散式版本控制 Git開發用不著打一架 - 分散式版本控制 Git
開發用不著打一架 - 分散式版本控制 Git
 
VSCode Remote Development 介紹
VSCode Remote Development 介紹VSCode Remote Development 介紹
VSCode Remote Development 介紹
 
Git&Github Tutorial
Git&Github TutorialGit&Github Tutorial
Git&Github Tutorial
 
git merge 與 rebase 的觀念與實務應用
git merge 與 rebase 的觀念與實務應用git merge 與 rebase 的觀念與實務應用
git merge 與 rebase 的觀念與實務應用
 
A successful git branching model 導讀
A successful git branching model 導讀A successful git branching model 導讀
A successful git branching model 導讀
 
與大師對談: 轉移到微服務架構必經之路 ~ 系統與資料庫重構
與大師對談: 轉移到微服務架構必經之路~ 系統與資料庫重構與大師對談: 轉移到微服務架構必經之路~ 系統與資料庫重構
與大師對談: 轉移到微服務架構必經之路 ~ 系統與資料庫重構
 
Git内部培训文档
Git内部培训文档Git内部培训文档
Git内部培训文档
 
Xcode 的 git 版本管理
Xcode 的 git 版本管理Xcode 的 git 版本管理
Xcode 的 git 版本管理
 
twMVC#36讓 Exceptionless 存管你的 Log
twMVC#36讓 Exceptionless 存管你的 LogtwMVC#36讓 Exceptionless 存管你的 Log
twMVC#36讓 Exceptionless 存管你的 Log
 

Viewers also liked

1001 memoria de fabricacion2zñ
1001 memoria de fabricacion2zñ1001 memoria de fabricacion2zñ
1001 memoria de fabricacion2zñalejandranz
 
Gloria cediel actividad1_mapa_c
Gloria cediel actividad1_mapa_cGloria cediel actividad1_mapa_c
Gloria cediel actividad1_mapa_cgloriacediel
 
Apresentação2 informaticaaplicada
Apresentação2 informaticaaplicadaApresentação2 informaticaaplicada
Apresentação2 informaticaaplicadaDjenne Silva
 
Blanca yineth garzon oviedo actividad 1 mapa c.pdf
Blanca yineth garzon oviedo actividad 1 mapa c.pdfBlanca yineth garzon oviedo actividad 1 mapa c.pdf
Blanca yineth garzon oviedo actividad 1 mapa c.pdfI:E Promocion Social
 
Como desfragmentar um disco
Como desfragmentar um discoComo desfragmentar um disco
Como desfragmentar um discoSara Freitas
 
Os animais paulo rafael
Os animais paulo rafaelOs animais paulo rafael
Os animais paulo rafaelDora Carvalho
 
adoção inicial dos arts 1 a 70 da lei 12 973-2014
adoção inicial dos arts  1 a 70 da lei 12 973-2014adoção inicial dos arts  1 a 70 da lei 12 973-2014
adoção inicial dos arts 1 a 70 da lei 12 973-2014Fábio Almeida
 
Arvore araucaria.doc
Arvore araucaria.docArvore araucaria.doc
Arvore araucaria.docbomviver
 
Bioma Pantanal
Bioma PantanalBioma Pantanal
Bioma PantanalJean Leão
 

Viewers also liked (20)

Boletin profesores
Boletin profesoresBoletin profesores
Boletin profesores
 
1001 memoria de fabricacion2zñ
1001 memoria de fabricacion2zñ1001 memoria de fabricacion2zñ
1001 memoria de fabricacion2zñ
 
Tabla de paquetes
Tabla de paquetesTabla de paquetes
Tabla de paquetes
 
brian david y jesus
brian david y jesusbrian david y jesus
brian david y jesus
 
Gloria cediel actividad1_mapa_c
Gloria cediel actividad1_mapa_cGloria cediel actividad1_mapa_c
Gloria cediel actividad1_mapa_c
 
maria katsarou
maria katsaroumaria katsarou
maria katsarou
 
Taylor swift
Taylor swiftTaylor swift
Taylor swift
 
Apresentação2 informaticaaplicada
Apresentação2 informaticaaplicadaApresentação2 informaticaaplicada
Apresentação2 informaticaaplicada
 
Blanca yineth garzon oviedo actividad 1 mapa c.pdf
Blanca yineth garzon oviedo actividad 1 mapa c.pdfBlanca yineth garzon oviedo actividad 1 mapa c.pdf
Blanca yineth garzon oviedo actividad 1 mapa c.pdf
 
Manual psoriasis
Manual psoriasisManual psoriasis
Manual psoriasis
 
Como desfragmentar um disco
Como desfragmentar um discoComo desfragmentar um disco
Como desfragmentar um disco
 
Os animais paulo rafael
Os animais paulo rafaelOs animais paulo rafael
Os animais paulo rafael
 
Dadismo
DadismoDadismo
Dadismo
 
adoção inicial dos arts 1 a 70 da lei 12 973-2014
adoção inicial dos arts  1 a 70 da lei 12 973-2014adoção inicial dos arts  1 a 70 da lei 12 973-2014
adoção inicial dos arts 1 a 70 da lei 12 973-2014
 
Taller 9
Taller 9Taller 9
Taller 9
 
Arvore araucaria.doc
Arvore araucaria.docArvore araucaria.doc
Arvore araucaria.doc
 
Familia
FamiliaFamilia
Familia
 
012 tessalonicenses 1º
012 tessalonicenses 1º012 tessalonicenses 1º
012 tessalonicenses 1º
 
Bioma Pantanal
Bioma PantanalBioma Pantanal
Bioma Pantanal
 
EFRUZHU CANCER THEORY OTHER/DİFFERENT NAMES
EFRUZHU  CANCER  THEORY  OTHER/DİFFERENT  NAMESEFRUZHU  CANCER  THEORY  OTHER/DİFFERENT  NAMES
EFRUZHU CANCER THEORY OTHER/DİFFERENT NAMES
 

Similar to Git入门与实践

Git Essence Tutorial
Git Essence TutorialGit Essence Tutorial
Git Essence TutorialHo Kim
 
Git 入门实战
Git 入门实战Git 入门实战
Git 入门实战icy leaf
 
Git in a nutshell
Git in a nutshellGit in a nutshell
Git in a nutshellNelson Tai
 
工程師必備第一工具 - Git
工程師必備第一工具 - Git工程師必備第一工具 - Git
工程師必備第一工具 - GitAlan Tsai
 
簡介 GitHub 平台
簡介 GitHub 平台簡介 GitHub 平台
簡介 GitHub 平台Will Huang
 
Intro to Git 投影片
Intro to Git 投影片Intro to Git 投影片
Intro to Git 投影片Tony Yeh
 
Git 版本控制系統 -- 從微觀到宏觀
Git 版本控制系統 -- 從微觀到宏觀Git 版本控制系統 -- 從微觀到宏觀
Git 版本控制系統 -- 從微觀到宏觀Wen-Tien Chang
 
Use Git-flow Manage Your Git Workflow
Use Git-flow Manage Your Git WorkflowUse Git-flow Manage Your Git Workflow
Use Git-flow Manage Your Git WorkflowLiangjun Jiang
 
Git前世今生
Git前世今生Git前世今生
Git前世今生hiyco
 
Git & git flow
Git & git flowGit & git flow
Git & git flowAmo Wu
 
Git 使用介绍
Git 使用介绍Git 使用介绍
Git 使用介绍medcl
 
Learning to Use Git | WeiYuan
Learning to Use Git | WeiYuanLearning to Use Git | WeiYuan
Learning to Use Git | WeiYuanWei-Yuan Chang
 
Nagiosql和centreon比较
Nagiosql和centreon比较Nagiosql和centreon比较
Nagiosql和centreon比较GGclub
 
Git flow
Git flowGit flow
Git flowshaokun
 
Git+使用教程
Git+使用教程Git+使用教程
Git+使用教程gemron
 
Git原理与实战 201607
Git原理与实战 201607Git原理与实战 201607
Git原理与实战 201607Charles Tang
 
Git and git hub
Git and git hubGit and git hub
Git and git hub唯 李
 
twMVC#38 How we migrate tfs to git(using azure dev ops)
twMVC#38 How we migrate tfs to git(using azure dev ops) twMVC#38 How we migrate tfs to git(using azure dev ops)
twMVC#38 How we migrate tfs to git(using azure dev ops) twMVC
 

Similar to Git入门与实践 (20)

Git Essence Tutorial
Git Essence TutorialGit Essence Tutorial
Git Essence Tutorial
 
Git 入门实战
Git 入门实战Git 入门实战
Git 入门实战
 
Git簡報
Git簡報Git簡報
Git簡報
 
Git in a nutshell
Git in a nutshellGit in a nutshell
Git in a nutshell
 
工程師必備第一工具 - Git
工程師必備第一工具 - Git工程師必備第一工具 - Git
工程師必備第一工具 - Git
 
Git 經驗分享
Git 經驗分享Git 經驗分享
Git 經驗分享
 
簡介 GitHub 平台
簡介 GitHub 平台簡介 GitHub 平台
簡介 GitHub 平台
 
Intro to Git 投影片
Intro to Git 投影片Intro to Git 投影片
Intro to Git 投影片
 
Git 版本控制系統 -- 從微觀到宏觀
Git 版本控制系統 -- 從微觀到宏觀Git 版本控制系統 -- 從微觀到宏觀
Git 版本控制系統 -- 從微觀到宏觀
 
Use Git-flow Manage Your Git Workflow
Use Git-flow Manage Your Git WorkflowUse Git-flow Manage Your Git Workflow
Use Git-flow Manage Your Git Workflow
 
Git前世今生
Git前世今生Git前世今生
Git前世今生
 
Git & git flow
Git & git flowGit & git flow
Git & git flow
 
Git 使用介绍
Git 使用介绍Git 使用介绍
Git 使用介绍
 
Learning to Use Git | WeiYuan
Learning to Use Git | WeiYuanLearning to Use Git | WeiYuan
Learning to Use Git | WeiYuan
 
Nagiosql和centreon比较
Nagiosql和centreon比较Nagiosql和centreon比较
Nagiosql和centreon比较
 
Git flow
Git flowGit flow
Git flow
 
Git+使用教程
Git+使用教程Git+使用教程
Git+使用教程
 
Git原理与实战 201607
Git原理与实战 201607Git原理与实战 201607
Git原理与实战 201607
 
Git and git hub
Git and git hubGit and git hub
Git and git hub
 
twMVC#38 How we migrate tfs to git(using azure dev ops)
twMVC#38 How we migrate tfs to git(using azure dev ops) twMVC#38 How we migrate tfs to git(using azure dev ops)
twMVC#38 How we migrate tfs to git(using azure dev ops)
 

More from LC2009

平台思维
平台思维平台思维
平台思维LC2009
 
Thrift 应用与实践
Thrift 应用与实践Thrift 应用与实践
Thrift 应用与实践LC2009
 
从学校到职场
从学校到职场从学校到职场
从学校到职场LC2009
 
HTML5 多媒体入门
HTML5 多媒体入门HTML5 多媒体入门
HTML5 多媒体入门LC2009
 
React vs Flux
React vs FluxReact vs Flux
React vs FluxLC2009
 
编写可阅读的代码
编写可阅读的代码编写可阅读的代码
编写可阅读的代码LC2009
 
前端单元测试
前端单元测试前端单元测试
前端单元测试LC2009
 

More from LC2009 (7)

平台思维
平台思维平台思维
平台思维
 
Thrift 应用与实践
Thrift 应用与实践Thrift 应用与实践
Thrift 应用与实践
 
从学校到职场
从学校到职场从学校到职场
从学校到职场
 
HTML5 多媒体入门
HTML5 多媒体入门HTML5 多媒体入门
HTML5 多媒体入门
 
React vs Flux
React vs FluxReact vs Flux
React vs Flux
 
编写可阅读的代码
编写可阅读的代码编写可阅读的代码
编写可阅读的代码
 
前端单元测试
前端单元测试前端单元测试
前端单元测试
 

Git入门与实践

  • 2.     大纲 • 关于版本控制       • 入门操作及原理   • 分支操作及原理   • 其它常用命令   • 更深入的理解   • 团队场景演示   • 总结回顾
  • 4.     关于版本控制               VS 集中式版本控制与分布式版本控制的区别   Git的诞生历史 集中式版本控制 分布式版本控制 集中式版本控制 优点:统一的集中式版本仓库,可以协作管理 缺点:单点故障,有丢失数据风险,不能离开网络,每次获取版本信息都要通过网络,速度不够快 ! 分布式版本控制 优点:完整镜像克隆,数据安全性高。几乎所有操作都是本地执行,不用联网,操作速度快
  • 6.     创建第一个项目              1.基础配置   2.创建一个版本库   3.添加修改文件并提交 VS 基本步骤: 1. 在工作目录中修改某些文件。 2. 对修改后的文件进行快照,然后保存到暂存区域。 3. 提交更新,将保存在暂存区域的文件快照永久转储到 Git 目录中。
  • 7.     基础操作浅析              1. 文件的状态变换 4.撤销修改 2. diff文件的修改 5.master和HEAD的含义 3. commit提交注释的规范性 6.查看日志 stage work ed489a47c3 b325c c10b9 da985 develop git diff develop master HEAD git diff git diff HEAD git diff —staged git diff da985 b325c … stage work HEAD git reset —files git checkout —files git checkout HEAD —files stage work ed489a47c3 b325c c10b9 da985 develop —hard master HEAD not —soft git reset HEAD~3 … master HEAD
  • 9.     本地分支的使用               分支基础操作: 创建 - 查看 - 切换 - 删除 - 合并 - 衍合 1.每次提交master都向前移动一步 2.新建一个分支并切换到分支HEAD指向 3. 对dev分支进行修改 4. 将master和dev进行了快速合并5. 删除dev分支就留下了干净的master
  • 10.     提交对象的状态              
  • 11.     合并与衍合               VS       合并 衍合 进行线上分支合并时,一律使用 git merge —no-ff,保留合并时间戳 rebase的作用是为了构造干净的提交历史,一般用于帮助别人维护项目,将分支信息合并权利交给主开发者用,把rebase当成一种在推送之前清理提交历史的手段 ******** 一定不要在push到远程以后进行rebase,这样会使开发历史变得混乱不堪
  • 12.     远程分支               远程分支是对远程仓库中的分支的索引,它们是一些无法移动的本地分支;只有在 Git 进行网 络交互时才会更新。远程分支就像是书签,提醒着你上次连接远程仓库时上面各分支的位置
  • 13.     团队场景演示               ! 场景:开发一个换肤项目 项目周期:两周 参与者:多人合作 ! git push origin master:theme git co theme git co master;git pull git co theme; git rebase master git co master; git merge theme git push git push origin :theme git br -d theme | git push origin master:theme git remote show origin git remote prune origin ! 1.比较流行的分支模型   2.工作场景的灵活发挥
  • 15.     其它常用操作               ・ 临时存储Stashing ・ 重写历史 ・ 里程碑Tag ・ 忽略特殊文件
  • 17.     底层原理               Git本质是一套内容寻址系统 整个核心在.git目录中 Git存储对象原理 ! 几个有用命令: git hash-object -w 存储数据对象 git cat-file -p 查看数据对象 git cat-file -t 查看数据对象类型
  • 19.     推荐资源               Pro Git中文版 廖雪峰教程 Git简易指南 图解Git Git Community Book 中文版 Git权威指南 Git Cheatsheet 中文版 一个成功的分支模型 命令行工具Tig 客户端工具SourceTree
  • 20. QA

Editor's Notes

  1. git config —global —list git config user.name ‘Liang Chao’
  2. 查看分支:git branch 创建分支:git branch name 切换分支:git checkout name 创建+切换分支:git checkout -b name 合并某分支到当前分支:git merge name 删除分支:git branch -d name
  3. 查看分支:git branch 创建分支:git branch name 切换分支:git checkout name 创建+切换分支:git checkout -b name 合并某分支到当前分支:git merge name 删除分支:git branch -d name
  4. 查看分支:git branch 创建分支:git branch name 切换分支:git checkout name 创建+切换分支:git checkout -b name 合并某分支到当前分支:git merge name 删除分支:git branch -d name