. 掌握 - git 概述

1. git 简介?

1.什么是git?

> git是一款开源的分布式版本控制工具

> 在世界上所有的分布式版本控制工具中,git是最快、最简单、最流行的

2.git的起源?

> 作者是Linux之父:LinusBenedict Torvalds

> 当初开发git仅仅是为了辅助Linux内核的开发(管理源代码)

3.git的现状?

> 在国外已经非常普及,国内并未普及(在慢慢普及)

> 越来越多的开源项目已经转移到git

2. 常见的源代码管理工具有哪些?

> CVS

- 开启版本控制之门

- 1990年诞生,远古时代的主流源代码管理工具

> SVN

- 全称是Subversion,集中式版本控制之王者

- CVS的接班人,速度比CVS快,功能比CVS多且强大

- 在国内软件企业中使用最为普遍(70%-90%

> ClearCase

- 收费的集中式版本控制工具,安装比Windows还大,运行比蜗牛还慢

- 能用ClearCase的一般是世界500强,他们有个共同的特点是财大气粗或者人傻钱多

> VSS

- 微软的集中式版本控制工具,集成在Visual Studio

3. git svn的简单对比

> 速度

在很多情况下,git的速度远远比SVN

> 结构

SVN是集中式管理,git是分布式管理

> 其他

SVN使用分支比较笨拙,git可以轻松拥有无限个分支

SVN必须联网才能正常工作,git支持本地版本控制工作

旧版本的SVN会在每一个目录置放一个.svngit只会在根目录拥有一个.git

4. SVN工作流程和GIT工作流程对比

- svn checkout —— gitclone

svn 只下载代码,git 会连同代码仓库一起下载下来

- svn commit —— gitcommit

svn 是提交到服务器,git中是提交到本地仓库,需要使用push才能提交到服务器

-  svn update -git pull

都是从服务器下载最新被修改的代码

分布式和集中式最大的区别在于:在分布式下,本地有个代码仓库,开发者可以在本地提交; 而集中式版本控制, 只有在服务器才有一个代码仓库, 只能在服务器进行统一管理

5. git工作原理

1.概念理解

- 工作区

> .git文件夹同级的其他文件夹或者子文件夹

- 版本控制库

> 暂缓区

> 分支(Git不像SVN那样有主干和分支的概念. 仅仅存在分支,其中master分支为默认被创建的分支,类似于SVN中的主干)

切换分支:通过控制HEAD指针指向不同的分支,就可以切换*

 操作原则: 所有新添加/删除/修改的文件必须先添加到暂缓区,然后才能提交到HEAD指向的当前分支中

8. git使用环境

1.单人开发只需要一个本地库

原因:不需要与他人共享代码,只负责管理自己代码即可;例如提交代码,删除代码,版本控制等等

2.多人开发时需要一个共享版本库

共享版本库的形式:

本地共享库:文件夹/U/硬盘

远程共享库:自己搭建git服务器/ 托管到第三方平台(例如github, oschina)

3.客户端使用环境 无论是单人开发还是多人开发,客户端都可以使用命令行或者图形界面使用git

> SourceTree

- 下载地址:http://www.sourcetreeapp.com/download/

> GitHub

- 下载地址:https://mac.github.com

- 不过它是专门为GitHub网站而设计的

> Xcode

- 虽然集成较好,但是只能做一些常用的简单操作,复杂操作还要使用命令行

9. 学习网站

http://backlogtool.com/git-guide/cn/intro/intro1_1.html

. 掌握 - Git命令行演练-个人开发

0. 如何学习git指令

> githelp [子命令]

> 和学习SVN指令是一样的,只不过git是通过使用指南的形式展示给用户看(不能编辑的vim编辑器),使用q退出vim编辑器,按空格进入下一页,ctrl + B 回到上一页; /关键字进行搜索

1. 初始化一个本地仓库

> 原因: 管理本地代码,修改上传,版本回退

> 命令:git init

2. 配置仓库

> 告诉git你是谁?(方便以后管理自己的代码)

原因: 追踪修改记录

命令: git configuser.name “Edison

> 告诉git怎样联系你?

原因: 多人合作开发时, 沟通交流

命令: git config user.email "shunzi@qq.com"

> 查看配置信息(.git-> config打开)

命令:  git config -l

  • 全局的配置:git config --global user.name edison
  • git config --global user.email 350106106@qq.com

3. 个人开发演练

> 创建文件并提交

命令:

touch main.c

git add .

gitcommit -m “注释

> 修改文件并提交

命令:

git add .

gitcommit -m “注释

> 删除文件并提交

命令:

git rm person.h

gitcommit -m “注释

> 日志查看

命令:

git log

git reflog

> 版本回退

命令:

gitreset —-hard HEAD 重置到当前版本

gitreset —-hard HEAD^^ 重置到上上个版本

gitreset ——hard HEAD~2 重置到往上2个版本

gitreset —-hard 七位版本号 重置到指定版本::

4. 备注补充

1.文件状态(git status)

> 颜色含义

红色: 代表被添加或者修改的文件没有被添加到暂缓区

绿色: 代表文件在暂缓区,等待提交

> 版本号的含义

版本号是一个由SHA1生成的40位哈希值

这样做的目的是保证版本号的唯一

2.vim编辑器的使用:

计算机生成了可选文字:Vim 编 辑 器 简 单 使 用 终 端 输 入 vim (path) 命 令 模 式 ES 插 入 模 式 ESC 命 令 行 模 式

命令模式:等待编辑命令输入;所有输入的内容都被当做命令来执行

插入模式:输入的所有内容都被显示,并被当做文件内容处理

命令行模式:执行待定命令(保存文件并退出vim : wq   ; 强制退出不保存: q! )

3.日志查看配置

命令如下:

git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset-%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)\<%an\>%Creset'--abbrev-commit"

4.配置别名

git config alias.st“status”

git config alias.ci“commit -m”

5.--global的作用

可以进行全局配置,所有的版本库共享此配置

查看全局配置(桌面前往->个人->.gitconfig

** 个人电脑上建议使用全局配置**

. 掌握 - Git命令行演练-团队开发

 团队开发必须有一个共享库,这样成员之间才可以进行协作开发

0. 共享库分类

> 本地共享库(只能在本地面对面操作)

- 电脑文件夹/U/移动硬盘

> 远程共享库(可通过网络远程操作)

- 自己搭建Git服务器(**不建议**)

- Github上托管项目(**建议**)

Github网址(https://github.com); 公开项目免费, 私有项目收费

- OSChina上托管项目(**推荐**)

OSChina网址(https://git.oschina.net) 安全免费,在国内访问速度快

1. 搭建本地共享库

原因: 多人合作开发,代码共享

命令: git init —-bare

2. 经理初始化项目到本地共享库

命令: git clone 本地代码仓库地址

3. 演示多人开发

> 创建文件夹manager,niuda

命令:

mkdir manager

mkdir niuda

> 分别进入到两个文件夹从共享库clone项目到本地

命令:

gitclone 本地代码仓库地址

gitclone 本地代码仓库地址

> 演练新增文件同步

命令:

touch person.h

git add .

gitcommit -m “创建person.h”

git push

git pull

> 演练修改文件同步

命令:

git add .

gitcommit -m “注释

git push

git pull

> 演练删除文件同步

命令:

git rm filename

gitcommit -m “注释

git push

git pull

> 演练冲突解决

命令:

git pull

> 演练忽略文件

命令:

touch .gitignore

open.gitignore 加入忽略文件名

git add .

gitcommit -m “注释

.gitignore文件配置规则

http://www.cnblogs.com/ha iq/archive/2012/12/26/2833746.html

4. 备注笔记

> 关于忽略文件

在真实开发中,配置.gitignore文件, 去github里面搜索gitignore 选择OC版本的,拷贝到本地仓库即可,记得添加到本地版本库

> 常见问题

fetchfirst 代表当前文件过期,需要从远程共享库更新

git pull

. 掌握 -Git-XCode演练-团队开发

1. 搭建本地共享版本库

命令: git init —-bare

2. 经理初始化项目到共享版本库

** 注意: 添加忽略文件,不然Xcode有可能会把没必要的文件提交**

** 必须在使用Xcode之前把忽略文件添加进来, 因为Xcode创建工程时, 默认直接把所有文件添加到暂缓区, 加进去之后忽略文件对其就无效了**

3. 牛大,牛二使用Xcode 克隆项目

4. 演练添加文件同步

5. 演练修改文件同步

6. 演练删除文件同步

7. 演练冲突

. 了解 -github的使用

1. 托管项目到github-HTTPS验证

1.打开github网站:[https://www.github.com]

2.注册账号(OneShunzi)

3.点击创建新仓库[https://github.com/new]

4.填入项目名称,描述等信息

5.创建完成

6.可根据生成的版本库地址进行克隆下来进行操作

2. 托管项目到github-SSH验证

1.点击个人” -> setting-> SSH keys -> Add SSH key

2.将生成的公钥添加进来即可.(以下是生成公钥私钥方法) [https://help.github.com/articles/generating-ssh-keys/]

3. 怎样将其他著名框架添加到我们的代码仓库?

1.搜索到对应的框架

2.点击fork

3.当项目被移到自己代码仓库中,就可以根据地址克隆下来进行操作

** 注意:

你可以针对此框架进行任意修改,但是仅仅作用在你的本地仓库中的副本,对原作者项目没有任何影响.

如果想向原作者提建议,可以直接使用,pull request操作.

提交完成后,原作者可以在pull request中看到你的提交.至于是否采纳,就是原作者的意愿搜索到对应的框架

. 了解 -OSChina的使用

1. 托管项目到OSChina

1.打开oschina网站:[https://git.oschina.net]

2.注册账号(OneShunzi)

3.点击创建新仓库[https://git.oschina.net/projects/new]

4.填入项目名称,描述等信息

5.创建完成

6.可根据生成的版本库地址进行克隆下来进行操作

2. 怎样加入合作伙伴?

1.点击管理”->项目成员管理->选择成员权限进行创建

2.或者直接只用SSH(以下是生成公钥私钥方法)

>部署公钥允许以只读的方式访问项目,主要用于项目在生产服务器的部署上,免去HTTP方式每次操作都要输入密码和

普通SSH方式担心不小心修改项目代码的麻烦。

> [https://help.github.com/articles/generating-ssh-keys/]

3. 怎样将其他著名框架添加到我们的代码仓库?

1.搜索到对应的框架

2.点击fork

3.当项目被移到自己代码仓库中,就可以根据地址克隆下来进行操作

** 注意:

你可以针对此框架进行任意修改,但是仅仅作用在你的本地仓库中的副本,对原作者项目没有任何影响.

如果想向原作者提建议,可以直接使用,pull request操作.

提交完成后,原作者可以在pull request中看到你的提交.至于是否采纳,就是原作者的意愿

. 了解 - 新人服务器搭建

1.新人服务器搭建概念原因?

概念: 搭建一个临时共享版本库, 供新人专用

原因: 防止新人刚到时,搞乱服务器上的项目

2.新建一个文件夹,newBee,作为新人服务器

3.进入文件夹 使用git init —-bare 初始化仓库

4.经理打开自己项目所在文件夹,执行PULL ,更新到最新

5.然后source control ->项目master -> configure 项目

> 选择Remotes选项 代表当前所连的远程服务器地址

> 点击+号 添加 将newBee文件路径作为另外一个远程服务器地址 file:// 协议开头 结尾以/结尾

> Done

6.经理将最新代码提交到新人远程仓库

7.经理分配新人服务器地址给新人

8.新人各种折腾

9.经理建立文件夹,从新人服务器下载代码检查

10.图解:

计算机生成了可选文字:菜 鸟 共 享 库 经 理 测 试 菜 鸟 菜 鸟 本 地 库 本 地 库 实 战 共 享 库 上 传 到 菜 鸟 共 享 库 经 理 本 地 库

. 了解 - Git版本备份/分支管理

 git中不是通过拷贝代码来解决备份和开启分支的 git直接打标签, 通过控制head指向,来回到任一版本

1.版本备份

1.建立共享库

> 创建文件夹shareWeibo

> 进入文件夹后,初始化共享库

git init ——bare

2.经理克隆项目后开发完1.0版本,打标签后,上传共享库

> 创建manager文件夹

> 进入文件夹后

gitclone 共享库绝对路径

> 进入工作区,配置姓名,邮箱

git config user.name“manager”

git config user.email“manager@qq.com”

> 经理创建文件,并修改部分代码,提交代码,上传到共享库,完成v1.0版本

touch main.c

openmain.c:: 打开后写入abc

git add .

gitcommit -m “完成1.0版本开发

git push

> 经理给此版本打标签,并将标签上传到共享库

git tag-a v1.0 -m “标记1.0版本

git push origin v1.0

> 经理继续开发2.0版本......并提交

git add .

gitcommit -m “2.0部分功能

git push

2. 已发布版本bug修复

在以上步骤基础上做以下操作

1.牛大克隆项目,根据1.0版本创建分支,修复bug

> 创建niuda文件夹

> 进入文件夹后

gitclone 共享库绝对路径

> 进入工作区,配置姓名,邮箱

git config user.name“niuda”

git config user.email“niuda@qq.com”

> 根据v1.0版本建立新分支v1.0fixbug并切换到此分支

git checkout v1.0 -bv1.0fixbug::

> 修复bug后提交到本地版本库

 注意此处提交到的是HEAD指向的分支-v1.0fixbug

git add .

gitcommit -m “修复bug”

2.牛大修复bug,打标签v1.1作版本备份,并上传共享库

git tag-a v1.1 -m “1.1版本备份

git push origin v1.1

3.牛大上传整个分支到共享版本库

git push originv1.0fixbug

 ———至此,分支修复bug结束,下面经理要合并分支———

1.经理从共享库更新代码到本地库

git pull

2.经理查看当前服务器都有哪些分支

git branch -r

3.经理切换到master分支后,v1.0fixbug分支合并过来

git checkout master

gitmerge origin/v1.0fixbug -m “合并分支

4.经理合并完成后提交到共享库

git add .

gitcommit -m “合并分支

git push

5.合并完成后,可以删除共享库的分支

git branch -r -dorigin/v1.0fixbug

6.查看版本标签,至此结束!!

git tag

开发中的代码管理工具熟知相关推荐

  1. IOS开发-关于代码管理工具之SVN

    最近在做的一个项目,就用到了代码管理工具,那么就对SCN进行了一个简单的了解,即原理和一些常用命令. 那么我们为什么需要使用SVN呢,我们可以吧SVN当成是一个备份服务器,他可以帮你记住每次上传到这个 ...

  2. 拒绝内存泄露,谈一些纯代码iPhone开发中的内存管理

    笔者刚从学校出来,算上实习期,接触iPhone开发已有半载,也算是对iPhone(iOS)开发中的内存管理有了些认识,由于开发中一直没有用Interface Builder,本文就谈谈纯代码iPhon ...

  3. 代码管理工具 Git

    之前一直使用微软的代码管理工具TFS(Team Foundation Server)..NET CORE 2.0的发布后,考虑到.NET CORE项目可以跨平台,准备把项目迁移到.NET CORE 环 ...

  4. 还在自建代码仓库?阿里云的这款企业级代码管理工具免费、还香!

    简介:代码托管产品是软件研发过程中的必备工具,不少企业在进行代码托管工具选型的时候会选择开源工具自建,然而,开源版本的代码管理工具往往只是提供了基础的代码仓储能力,无法满足企业在安全性.代码质量.权限 ...

  5. 好代码是管出来的——.Net中的代码规范工具及使用

    上一篇文章好代码是管出来的--C#的代码规范介绍了编码标准中一些常用的工具,本篇就具体来介绍如何使用它们来完成代码管理. 本文主要内容有: Roslyn简介 开发基于Roslyn的代码分析器 常用的基 ...

  6. svn管理工具_主流代码管理工具深度评测

    引言 作为有十几年IT行业代码的从业人员,经历过代码管理工具的变迁,从早期的微软的Source Code Control,到TFS,再到SVN,再到现在的Git.我深知代码管理工具是代码开发过程中非常 ...

  7. java接口自动化(四) - 企业级代码管理工具Git的应用

    1.简介 首先我们自己需要将自己的代码上传到GitHub上边做好备份.用来避免万一由于某些不可控的非人为因素或者人为因素造成的代码丢失.而且GitHub是一个开源的代码管理工具.所以宏哥这里再次介绍一 ...

  8. golang中的包管理工具——govendor和godep简单学习

    为什么用vendor目录 依赖问题 我们知道,一个工程稍大一点,通常会依赖各种各样的包.而Go使用统一的GOPATH管理依赖包,且每个包仅保留一个版本.而不同的依赖包由各自的版本工具独立管理,所以当所 ...

  9. 代码管理工具知多少?来看看Git怎么用吧

    一. 代码管理工具简介 说到代码工具,许多工作了的小伙伴一定很有发言权.因为我们在实际开发环境中,就代码的复杂度和逻辑度,对于开发工程师来说,都是极具挑战性的.如果单靠个人来完成单个项目的整体开发,那 ...

最新文章

  1. Docker学习(八)-----Docker安装mysql
  2. 教你用R语言分析招聘数据,求职/转行不求人~(附代码、数据集)
  3. python3安装步骤mac-Mac安装Python3
  4. ArcGIS Web 应用开发框架(ADF)中的Ajax
  5. C# 企业微信消息推送对接,实现天气预报推送
  6. dataset.filter
  7. dcloud会员激活mui
  8. 如何学好3D引擎编程
  9. 我的Verilog HDL学习历程(二) 组合逻辑电路的一个实例:基于EGO1板子
  10. html5video拼接屏一部分黑屏,拼接屏常见问题与解决方法
  11. arm的一些概念(ARM9、Cortex的区别)
  12. 2020第六届上海市大学生网安大赛Misc|writeup
  13. 治愈系英语笔记-1-特殊疑问句
  14. SpringCloud神兽(二)之Ribbon
  15. 网页色彩大攻略(蓝色系)
  16. 1,matlab仿真正运动学
  17. 如何在Mac上获取App Store的ipa包(非越狱手机也可以)
  18. 一元二次方程求解的实现
  19. python基础知识之整除、取余、幂运算
  20. spider for qsbk

热门文章

  1. stm32结合TFLCD编程遇到的问题之.\Objects\EXTI_Project.axf: Error: L6218E: Undefined symbol POINT_COLOR (referre
  2. 用C语言实现一个简单的扫雷小游戏(附全代码及教程)
  3. VGA\HDMI转换芯片——MS9288C
  4. 项目开发过程中遇到的问题和解决方法
  5. 《AngularJS深度剖析与最佳实践》一1.5 实现更多功能:主题
  6. ArcGIS 10.0-10.5各版本下载,破解的
  7. android接口回调!为什么有人说Android开发不再吃香?内含福利
  8. HTML 表单 表格 列表
  9. Canvas—2D 绘图
  10. mysql dlz驱动,bind dlz mysql的配备