SlideShare a Scribd company logo
Git 使用介绍

  Medcl
有时候
• Svn连接不上
• Svn服务器挂了

 – 代码没法提交,那边编译不过!
 – 没法恢复到之前版本!
 – 分支切换成本太高!
 – 在家网速不行签出代码老半天


      Svn已死,提高效率,改用GIT
Git下的开发场景
•   1.连不上公司网络怎么办?
    –   吭哧吭哧,
    –   完成各种功能,
    –   feature代码照样提交
    –   回到公司或者网络恢复,提交

•   2.产品已经上线了,需要开发一个新的功能,花费时间较长,又不能影响其
    他人
    –   新起一个分支
    –   吭哧吭哧
    –   完成各种功能
    –   调试通过
    –   提交合并到master主干版本

•   3.重构
    – 小范围代码分支签出
    – 重构完毕
    – 合并到主干
什么是Git?
•   最早由linus torwalds用来管理linux 内核开发
•   SCM
•   开源(GNU GPL V2)
•   速度快
•   分布式
    – 离线也能继续开发
• 非线性开发
集中式开发
分布式开发
与SVN相比
Git         Svn
分布式管理       集中式管理
速度快         速度慢
控制命令多       有成熟的管理工具
擅长分支管理      不擅长分支管理
处理文件冲突很好    处理文件冲突很差
Git安装
• Windows
  – Msysgit
      • http://msysgit.github.com/
  – cygwin+git+openssh
  – Tortoisegit
• Centos
  – yum install git
• Ubuntu
  – apt-get install git
• Mac
  – Tower
Git command
TortoiseGit
• http://code.google.com/p/tortoisegit/wiki/Scr
  eenshots
LET’S GIT
使用流程
• 【客户端】
• 生成pub文件,提供给管理员

• 【服务端】
• 管理员添加相关权限信息(新建repo)

• 【客户端】
• 2.配置git的基本信息
    – Name
    – E-mail
•   3.本地git clone
•   4.开发
•   5.提交
•   6. PUSH
生成密钥对
• $ ssh-keygen
• Generating public/private rsa key pair.
• Enter file in which to save the key
  (/c/Users/Medcl/.ssh/id_rsa):
                                  Git服务器通过这些信息
                                     来识别你的身份
• $ ls
• id_rsa id_rsa.pub known_hosts
基本设置
                  你的信息,方便识别代码所有者




• git config --global user.name
  “medcl”
• git config --global user.email
  “m@medcl.net”
创建一个Repository
• Repository(代码仓库)
                                       在本地新建仓库,就可以开
• 1.本地新建一个代码仓库                          始使用git的所有功能
  –   cd project
  –   git init .
  –   git add .
  –   git commit –m “initial commit”

• 2.知道远程repo地址,复制一份repo副本到本地
  – git clone git://github.com/medcl/medcl.github.com.git

                                       协同开发同一个项目的时候
文件管理
• git会管理空文件,但不会理会空目录
• git commit –a
 – 自动添加未更新索引的文件
 – 未添加到git的文件不会自动处理

• 改名
 – git mv
• 删档
 – git rm
添加文件
• 自动添加目录及子目录下文件
 – git add .


• 添加指定文件到git仓库中
 – git add <文件名>

• 其它(查看帮助:git help add)
 – git add git-*.sh
 – git add Documentation/*.txt
添加文件
文件状态生命周期
Git Status
• 查看本地git仓库的状态信息
   git status
   git status c.txt
.gitignore
• 告诉git那些文件不需要管
 – 即使git add 也不会添加这些文件


• .gitignore文件内容例子:
   /data
   /work
   /logs
   /.idea
   /target
   /out         确保只提交给源代码到repo!
   .DS_Store
   *.iml

   各种编译输出,中间文件,一定不要提交上去
提交变更
历史记录
• git log
历史记录
•   git show HEAD
•   git help show
•   gitk –all
•   git log --graph
谁动了我的文件?
• 查看文件里面每一行的作者和版本信息
• git blame <文件名>
撤销回退
• git checkout [HEAD] 档名
• git checkout master
• git reset HEAD 档名
  – git reset SHA1:回退到指定版本
  – git reset HEAD~1:回退到上一个版本
  – 变回unstaged 或者 untracked;不变更内容
分支
• 为什么要使用分支?
 – 重构(refactor)
 – 开发新功能
 – 修复bug


• git鼓励多分支操作
• 每次修改都应该在分支上进行
• 只有调试通过了,才应该merge回主分支
Git 使用介绍
分支操作
•   git branch

•   master:默认的分支名称

•   git checkout –b newidea :建立分支并且切换

•   git branch

•   git checkout newidea 签出分支(切换到分支下)

•   git branch 查看当前分支

•   git merge newidea 合并分支

•   git branch –D newidea 删除分支
     –   只能删除非工作分支

•   git format-patch origin/master 可在当前目录下生成补丁
•   git checkout master
•   git aply xxx.patch
分支操作
•   touch newfile
•   git commit –a –m “new feature:xxx”
•   git checkout master
•   git merge newidea
    – 如果没有冲突,会自动合并
• git branch

• 合并分支:git merge <source branch>
• 目标分支为当前分支
web界面

• git instaweb --httpd=webrick
• http://localhost:1234/

                       Ruby Required!
参考资源
•   http://github.com
•   http://progit.org
•   http://git-scm.com
•   https://git.wiki.kernel.org/index.php/Gitweb
•   http://www.gitalist.com/install/
• http://gitstack.com
• http://sitaramc.github.com/gitolite/sts.html#ssh-ha

More Related Content

What's hot (20)

PPTX
git merge 與 rebase 的觀念與實務應用
Will Huang
 
PPTX
Git & Sourcetree 介紹
Adison wu
 
PDF
初心者 Git 上手攻略
Lucien Lee
 
PPTX
Mercurial簡介與教學
芳本 林
 
PDF
Git and Github basic with SourceTree
Chu-Siang Lai
 
PPTX
Git基礎介紹
Max Ma
 
PDF
Git 版本控制系統 -- 從微觀到宏觀
Wen-Tien Chang
 
PDF
Git Tutorial 教學
Wen-Tien Chang
 
PDF
Git in a nutshell
Nelson Tai
 
PDF
版本控制 使用Git & git hub
維佋 唐
 
PDF
A successful git branching model 導讀
Wen Liao
 
PDF
Git 入门实战
icy leaf
 
PDF
連哈秋都懂的Git教學
hydai
 
PDF
First meetingwithgit
Rhythm Sun
 
PDF
Learning to Use Git | WeiYuan
Wei-Yuan Chang
 
PDF
Add mailinglist command to gitolite
琛琳 饶
 
PDF
Xcode 的 git 版本管理
彼得潘 Pan
 
PDF
Yet another introduction to Git - from the bottom up
Wen-Tien Chang
 
PDF
Submodule && subtree
哲 于
 
ODP
Git 程式碼版本控制軟體介紹
PingLun Liao
 
git merge 與 rebase 的觀念與實務應用
Will Huang
 
Git & Sourcetree 介紹
Adison wu
 
初心者 Git 上手攻略
Lucien Lee
 
Mercurial簡介與教學
芳本 林
 
Git and Github basic with SourceTree
Chu-Siang Lai
 
Git基礎介紹
Max Ma
 
Git 版本控制系統 -- 從微觀到宏觀
Wen-Tien Chang
 
Git Tutorial 教學
Wen-Tien Chang
 
Git in a nutshell
Nelson Tai
 
版本控制 使用Git & git hub
維佋 唐
 
A successful git branching model 導讀
Wen Liao
 
Git 入门实战
icy leaf
 
連哈秋都懂的Git教學
hydai
 
First meetingwithgit
Rhythm Sun
 
Learning to Use Git | WeiYuan
Wei-Yuan Chang
 
Add mailinglist command to gitolite
琛琳 饶
 
Xcode 的 git 版本管理
彼得潘 Pan
 
Yet another introduction to Git - from the bottom up
Wen-Tien Chang
 
Submodule && subtree
哲 于
 
Git 程式碼版本控制軟體介紹
PingLun Liao
 

Viewers also liked (7)

PPTX
Restful
medcl
 
PDF
Elastic Search Training#1 (brief tutorial)-ESCC#1
medcl
 
PPT
How To Prosper In A Difficult Economy
Joy Johnson
 
PPTX
Ctp10 Conference 09
pmostert
 
PDF
ElasticSearch Training#2 (advanced concepts)-ESCC#1
medcl
 
PDF
Using SaltStack To AutoDeploy ElasticSearch
medcl
 
PPTX
презентация ФЭУТ
Feut_studsovet
 
Restful
medcl
 
Elastic Search Training#1 (brief tutorial)-ESCC#1
medcl
 
How To Prosper In A Difficult Economy
Joy Johnson
 
Ctp10 Conference 09
pmostert
 
ElasticSearch Training#2 (advanced concepts)-ESCC#1
medcl
 
Using SaltStack To AutoDeploy ElasticSearch
medcl
 
презентация ФЭУТ
Feut_studsovet
 
Ad

Similar to Git 使用介绍 (20)

PPTX
Git Essence Tutorial
Ho Kim
 
PPTX
Git使用入门
dpf2e
 
PPTX
Git 实战
简放 视野
 
PPTX
Git
EthanTu
 
PDF
Progit cn
冠伟 周
 
PDF
了解Git、安装git
lai dingqing
 
PPTX
Git内部培训文档
superwen
 
PDF
Introduction to git
Bo-Yi Wu
 
PDF
Git入门与实践
LC2009
 
PDF
Git+使用教程
gemron
 
PPT
Git 超簡單學習懶人包(軟體程式版本控管系統)
flylon
 
PDF
Git 好吃嗎
Szuping Wang
 
PDF
Git 簡介(古時候的簡報備份)
Hsin-lin Cheng
 
PPT
Github简介及实用入门
Rongxing Liu
 
PPTX
Git分享 -分支管理
yongfei Ma
 
PDF
Git基础
lai dingqing
 
PPTX
Git introduction
mythnc
 
PPTX
Git and git hub
唯 李
 
PDF
為自己學 Git
昀 李
 
ODP
Git 教學
Ming-Sian Lin
 
Git Essence Tutorial
Ho Kim
 
Git使用入门
dpf2e
 
Git 实战
简放 视野
 
Git
EthanTu
 
Progit cn
冠伟 周
 
了解Git、安装git
lai dingqing
 
Git内部培训文档
superwen
 
Introduction to git
Bo-Yi Wu
 
Git入门与实践
LC2009
 
Git+使用教程
gemron
 
Git 超簡單學習懶人包(軟體程式版本控管系統)
flylon
 
Git 好吃嗎
Szuping Wang
 
Git 簡介(古時候的簡報備份)
Hsin-lin Cheng
 
Github简介及实用入门
Rongxing Liu
 
Git分享 -分支管理
yongfei Ma
 
Git基础
lai dingqing
 
Git introduction
mythnc
 
Git and git hub
唯 李
 
為自己學 Git
昀 李
 
Git 教學
Ming-Sian Lin
 
Ad

Git 使用介绍

  • 2. 有时候 • Svn连接不上 • Svn服务器挂了 – 代码没法提交,那边编译不过! – 没法恢复到之前版本! – 分支切换成本太高! – 在家网速不行签出代码老半天 Svn已死,提高效率,改用GIT
  • 3. Git下的开发场景 • 1.连不上公司网络怎么办? – 吭哧吭哧, – 完成各种功能, – feature代码照样提交 – 回到公司或者网络恢复,提交 • 2.产品已经上线了,需要开发一个新的功能,花费时间较长,又不能影响其 他人 – 新起一个分支 – 吭哧吭哧 – 完成各种功能 – 调试通过 – 提交合并到master主干版本 • 3.重构 – 小范围代码分支签出 – 重构完毕 – 合并到主干
  • 4. 什么是Git? • 最早由linus torwalds用来管理linux 内核开发 • SCM • 开源(GNU GPL V2) • 速度快 • 分布式 – 离线也能继续开发 • 非线性开发
  • 7. 与SVN相比 Git Svn 分布式管理 集中式管理 速度快 速度慢 控制命令多 有成熟的管理工具 擅长分支管理 不擅长分支管理 处理文件冲突很好 处理文件冲突很差
  • 8. Git安装 • Windows – Msysgit • http://msysgit.github.com/ – cygwin+git+openssh – Tortoisegit • Centos – yum install git • Ubuntu – apt-get install git • Mac – Tower
  • 12. 使用流程 • 【客户端】 • 生成pub文件,提供给管理员 • 【服务端】 • 管理员添加相关权限信息(新建repo) • 【客户端】 • 2.配置git的基本信息 – Name – E-mail • 3.本地git clone • 4.开发 • 5.提交 • 6. PUSH
  • 13. 生成密钥对 • $ ssh-keygen • Generating public/private rsa key pair. • Enter file in which to save the key (/c/Users/Medcl/.ssh/id_rsa): Git服务器通过这些信息 来识别你的身份 • $ ls • id_rsa id_rsa.pub known_hosts
  • 14. 基本设置 你的信息,方便识别代码所有者 • git config --global user.name “medcl” • git config --global user.email “[email protected]
  • 15. 创建一个Repository • Repository(代码仓库) 在本地新建仓库,就可以开 • 1.本地新建一个代码仓库 始使用git的所有功能 – cd project – git init . – git add . – git commit –m “initial commit” • 2.知道远程repo地址,复制一份repo副本到本地 – git clone git://github.com/medcl/medcl.github.com.git 协同开发同一个项目的时候
  • 16. 文件管理 • git会管理空文件,但不会理会空目录 • git commit –a – 自动添加未更新索引的文件 – 未添加到git的文件不会自动处理 • 改名 – git mv • 删档 – git rm
  • 17. 添加文件 • 自动添加目录及子目录下文件 – git add . • 添加指定文件到git仓库中 – git add <文件名> • 其它(查看帮助:git help add) – git add git-*.sh – git add Documentation/*.txt
  • 21. .gitignore • 告诉git那些文件不需要管 – 即使git add 也不会添加这些文件 • .gitignore文件内容例子: /data /work /logs /.idea /target /out 确保只提交给源代码到repo! .DS_Store *.iml 各种编译输出,中间文件,一定不要提交上去
  • 24. 历史记录 • git show HEAD • git help show • gitk –all • git log --graph
  • 26. 撤销回退 • git checkout [HEAD] 档名 • git checkout master • git reset HEAD 档名 – git reset SHA1:回退到指定版本 – git reset HEAD~1:回退到上一个版本 – 变回unstaged 或者 untracked;不变更内容
  • 27. 分支 • 为什么要使用分支? – 重构(refactor) – 开发新功能 – 修复bug • git鼓励多分支操作 • 每次修改都应该在分支上进行 • 只有调试通过了,才应该merge回主分支
  • 29. 分支操作 • git branch • master:默认的分支名称 • git checkout –b newidea :建立分支并且切换 • git branch • git checkout newidea 签出分支(切换到分支下) • git branch 查看当前分支 • git merge newidea 合并分支 • git branch –D newidea 删除分支 – 只能删除非工作分支 • git format-patch origin/master 可在当前目录下生成补丁 • git checkout master • git aply xxx.patch
  • 30. 分支操作 • touch newfile • git commit –a –m “new feature:xxx” • git checkout master • git merge newidea – 如果没有冲突,会自动合并 • git branch • 合并分支:git merge <source branch> • 目标分支为当前分支
  • 31. web界面 • git instaweb --httpd=webrick • http://localhost:1234/ Ruby Required!
  • 32. 参考资源 • http://github.com • http://progit.org • http://git-scm.com • https://git.wiki.kernel.org/index.php/Gitweb • http://www.gitalist.com/install/ • http://gitstack.com • http://sitaramc.github.com/gitolite/sts.html#ssh-ha