SlideShare uma empresa Scribd logo
1 de 32
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 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

Mais conteúdo relacionado

Mais procurados

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

Mais procurados (20)

git merge 與 rebase 的觀念與實務應用
git merge 與 rebase 的觀念與實務應用git merge 與 rebase 的觀念與實務應用
git merge 與 rebase 的觀念與實務應用
 
Git & Sourcetree 介紹
Git & Sourcetree 介紹Git & Sourcetree 介紹
Git & Sourcetree 介紹
 
初心者 Git 上手攻略
初心者 Git 上手攻略初心者 Git 上手攻略
初心者 Git 上手攻略
 
Mercurial簡介與教學
Mercurial簡介與教學Mercurial簡介與教學
Mercurial簡介與教學
 
Git and Github basic with SourceTree
Git and Github basic with SourceTreeGit and Github basic with SourceTree
Git and Github basic with SourceTree
 
Git基礎介紹
Git基礎介紹Git基礎介紹
Git基礎介紹
 
Git 版本控制系統 -- 從微觀到宏觀
Git 版本控制系統 -- 從微觀到宏觀Git 版本控制系統 -- 從微觀到宏觀
Git 版本控制系統 -- 從微觀到宏觀
 
Git Tutorial 教學
Git Tutorial 教學Git Tutorial 教學
Git Tutorial 教學
 
Git in a nutshell
Git in a nutshellGit in a nutshell
Git in a nutshell
 
版本控制 使用Git & git hub
版本控制   使用Git & git hub版本控制   使用Git & git hub
版本控制 使用Git & git hub
 
A successful git branching model 導讀
A successful git branching model 導讀A successful git branching model 導讀
A successful git branching model 導讀
 
Git 入门实战
Git 入门实战Git 入门实战
Git 入门实战
 
連哈秋都懂的Git教學
連哈秋都懂的Git教學連哈秋都懂的Git教學
連哈秋都懂的Git教學
 
First meetingwithgit
First meetingwithgitFirst meetingwithgit
First meetingwithgit
 
Learning to Use Git | WeiYuan
Learning to Use Git | WeiYuanLearning to Use Git | WeiYuan
Learning to Use Git | WeiYuan
 
Add mailinglist command to gitolite
Add mailinglist command to gitoliteAdd mailinglist command to gitolite
Add mailinglist command to gitolite
 
Xcode 的 git 版本管理
Xcode 的 git 版本管理Xcode 的 git 版本管理
Xcode 的 git 版本管理
 
Yet another introduction to Git - from the bottom up
Yet another introduction to Git - from the bottom upYet another introduction to Git - from the bottom up
Yet another introduction to Git - from the bottom up
 
Submodule && subtree
Submodule && subtreeSubmodule && subtree
Submodule && subtree
 
Git 程式碼版本控制軟體介紹
Git 程式碼版本控制軟體介紹Git 程式碼版本控制軟體介紹
Git 程式碼版本控制軟體介紹
 

Destaque

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

Destaque (7)

Restful
RestfulRestful
Restful
 
Elastic Search Training#1 (brief tutorial)-ESCC#1
Elastic Search Training#1 (brief tutorial)-ESCC#1Elastic Search Training#1 (brief tutorial)-ESCC#1
Elastic Search Training#1 (brief tutorial)-ESCC#1
 
How To Prosper In A Difficult Economy
How To Prosper In A Difficult EconomyHow To Prosper In A Difficult Economy
How To Prosper In A Difficult Economy
 
Ctp10 Conference 09
Ctp10 Conference 09Ctp10 Conference 09
Ctp10 Conference 09
 
ElasticSearch Training#2 (advanced concepts)-ESCC#1
ElasticSearch Training#2 (advanced concepts)-ESCC#1ElasticSearch Training#2 (advanced concepts)-ESCC#1
ElasticSearch Training#2 (advanced concepts)-ESCC#1
 
Using SaltStack To AutoDeploy ElasticSearch
Using SaltStack To AutoDeploy ElasticSearchUsing SaltStack To AutoDeploy ElasticSearch
Using SaltStack To AutoDeploy ElasticSearch
 
презентация ФЭУТ
презентация ФЭУТпрезентация ФЭУТ
презентация ФЭУТ
 

Semelhante a Git 使用介绍

Git 超簡單學習懶人包(軟體程式版本控管系統)
Git 超簡單學習懶人包(軟體程式版本控管系統)Git 超簡單學習懶人包(軟體程式版本控管系統)
Git 超簡單學習懶人包(軟體程式版本控管系統)flylon
 
Git introduction
Git introductionGit introduction
Git introductionmythnc
 
Github简介及实用入门
Github简介及实用入门Github简介及实用入门
Github简介及实用入门Rongxing Liu
 
Git原理与实战 201607
Git原理与实战 201607Git原理与实战 201607
Git原理与实战 201607Charles Tang
 
COSCUP 2015 開源之道-Git工作坊教學簡報
COSCUP 2015 開源之道-Git工作坊教學簡報COSCUP 2015 開源之道-Git工作坊教學簡報
COSCUP 2015 開源之道-Git工作坊教學簡報Bachue Zhou
 
Git Essence Tutorial
Git Essence TutorialGit Essence Tutorial
Git Essence TutorialHo Kim
 
Git Flow 管理
Git Flow 管理Git Flow 管理
Git Flow 管理Pu Lee
 
Git &amp; git hub v1.2
Git &amp; git hub v1.2Git &amp; git hub v1.2
Git &amp; git hub v1.2Chris Chen
 
Android 程式設計(4)
Android 程式設計(4)Android 程式設計(4)
Android 程式設計(4)Roy Wang
 
Git and git hub
Git and git hubGit and git hub
Git and git hub唯 李
 
Introduction to git
Introduction to gitIntroduction to git
Introduction to gitBo-Yi Wu
 
Git使用进阶
Git使用进阶Git使用进阶
Git使用进阶Han Qin
 
Git flow 與團隊合作
Git flow 與團隊合作Git flow 與團隊合作
Git flow 與團隊合作Bo-Yi Wu
 
20170510 git 懶人包
20170510 git 懶人包20170510 git 懶人包
20170510 git 懶人包Chen-Ming Yang
 

Semelhante a Git 使用介绍 (20)

Git 超簡單學習懶人包(軟體程式版本控管系統)
Git 超簡單學習懶人包(軟體程式版本控管系統)Git 超簡單學習懶人包(軟體程式版本控管系統)
Git 超簡單學習懶人包(軟體程式版本控管系統)
 
Git introduction
Git introductionGit introduction
Git introduction
 
Github简介及实用入门
Github简介及实用入门Github简介及实用入门
Github简介及实用入门
 
Git原理与实战 201607
Git原理与实战 201607Git原理与实战 201607
Git原理与实战 201607
 
COSCUP 2015 開源之道-Git工作坊教學簡報
COSCUP 2015 開源之道-Git工作坊教學簡報COSCUP 2015 開源之道-Git工作坊教學簡報
COSCUP 2015 開源之道-Git工作坊教學簡報
 
Git Essence Tutorial
Git Essence TutorialGit Essence Tutorial
Git Essence Tutorial
 
Git Flow 管理
Git Flow 管理Git Flow 管理
Git Flow 管理
 
Git 教學
Git 教學Git 教學
Git 教學
 
Git &amp; git hub v1.2
Git &amp; git hub v1.2Git &amp; git hub v1.2
Git &amp; git hub v1.2
 
Android 程式設計(4)
Android 程式設計(4)Android 程式設計(4)
Android 程式設計(4)
 
Git基础培训
Git基础培训Git基础培训
Git基础培训
 
Git教學
Git教學Git教學
Git教學
 
Git Tutorial
Git TutorialGit Tutorial
Git Tutorial
 
Github簡介
Github簡介Github簡介
Github簡介
 
Git and git hub
Git and git hubGit and git hub
Git and git hub
 
Introduction to git
Introduction to gitIntroduction to git
Introduction to git
 
Git 实战
Git 实战Git 实战
Git 实战
 
Git使用进阶
Git使用进阶Git使用进阶
Git使用进阶
 
Git flow 與團隊合作
Git flow 與團隊合作Git flow 與團隊合作
Git flow 與團隊合作
 
20170510 git 懶人包
20170510 git 懶人包20170510 git 懶人包
20170510 git 懶人包
 

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 “m@medcl.net”
  • 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回主分支
  • 28.
  • 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