Git使用手记

Git介绍

Git对比SVN

分布式版本控制与集中式版本控制

SVN在开发的过程中需要持续与中央服务器进行交互;
Git在每个电脑里都存了一份与远程服务器一样的数据,当我们提交代码的时候仅仅是为了同步数据;

安全性

SVN由于是集中版本控制,所有代码提交都直接影响了中央仓库,这就意味着问题代码会直接影响所有人的代码;
SVN中央库出现数据丢失会导致整个版本库都无法正常使用,而Git由于是分布式的工作不会受到影响;

分支功能

SVN创建分支其实是在另一个目录创建了一份新的目录,相当于拷贝了一份放到另一个目录下;
Git创建分支没有任何改变,可以快速的切换分支;
相同点就是分支都是独立的,不会互相影响。
SVN分支越多占用的空间越大(复制),而Git仅仅是创建了索引(占用容量小)

Git基础概念

Git数据模型

img
img

Git基本命令介绍

image

clone

将远程仓库复制到本地仓库

fetch

将远程仓库的更新复制到本地仓库

pull

将远程仓库复制到工作空间

checkout

将本地仓库检出到工作空间

add

将工作空间的修修改添加到暂存区

commit

将暂存区的修改提交到本地仓库

push

将本地仓库的修改提交到远程仓库

使用场景

更新代码

本地未做修改更新代码

直接使用pull命令

本地修改了部分代码但是还没改完

  1. 先使用commit命令将修改的代码放入本地仓库(或者将代码放入stash储藏)
  2. 然后使用pull命令
  3. 使用pull命令之后去stash中找到需要恢复的版本

开发新功能

  1. 首先从dev分支pull一个新分支到本地,分支命名参见分支命名规范,例如bug-1174468
  2. 切换到分支进行开发工作
  3. 开发完成后可以commit到本地仓库,是否push到远程仓库可根据需要来判断
  4. commit后即可进行合并操作

提交代码

提交时不需要合并

提交代码时使用commit命令提交到本地仓库,然后使用push命令进行提交

提交远程仓库时发现需要合并

  1. 提交代码到本地仓库
  2. 提交代码到远程仓库
  3. 提交到远程仓库时可能会提示 版本不一致如何处理?这个时候需要拉取远端代码到本地进行合并操作,使用pull的 merge或rebase操作
  4. 将本地仓库代码与远端仓库代码进行合并后再执行push操作

合并分支

开发完成后需要将分支上的代码合并到dev或master分支上

  1. 首先pull dev分支,使得本地的分支与线上的分支同步
  2. 切换到dev分支,使用合并分支操作将自己的代码合并到dev分支上
  3. push合并后的代码

开发新功能的过程中需要和dev分支保持同步

我们在开发新的功能时,dev也持续进行新的开发,在我们的分支上进行开发的过程中需要持续和dev分支保持同步。
合并方式同合并分支

一些概念理解

merge

合并,将本地仓库与线上仓库进行合并。将被合并分支上的修改C5、C6与C3、C4进行合并,生成C7版本提交
img

rebase

变基,以合并分支为基础。将被合并分支上的修改C3、C4增加到合并分支mywork上,并增加C5、C6的修改生成C5‘和C6‘版本
img

忽略文件.gitignore

Git不会进行提交的文件配置
文件 .gitignore 的格式规范如下:
• 所有空行或者以 # 开头的行都会被 Git 忽略。
• 可以使用标准的 glob 模式匹配。
• 匹配模式可以以(/)开头防止递归。
• 匹配模式可以以(/)结尾指定目录。
• 要忽略指定模式以外的文件或目录,可以在模式前加上惊叹号(!)取反。
所谓的 glob 模式是指 shell 所使用的简化了的正则表达式。 星号(*)匹配零个或多个任意字符;[abc] 匹配任何一个列在方括号中的字符(这个例子要么匹配一个 a,要么匹配一个 b,要么匹配一个 c);问号(?
)只匹配一个任意字符;如果在方括号中使用短划线分隔两个字符,表示所有在这两个字符范围内的都可以匹配
(比如 [0-9] 表示匹配所有 0 到 9 的数字)。 使用两个星号(*) 表示匹配任意中间目录,比如a/**/z 可以匹
配 a/z, a/b/z 或 a/b/c/z等。
GitHub 有一个十分详细的针对数十种项目及语言的 .gitignore 文件列表,你可以在
https://github.com/github/gitignore 找到它.

使用规范

git提交名称

SSH使用姓名全拼,HTTPS为名称

git 提交信息书写规范

说明:fix <工作项Id>: <修改说明>
列子:fix #123 :修改readMe文件

分支命名

分支命名说明
主分支master主分支,所有提供给用户使用的正式版本,都在这个主分支上发布
开发分支dev开发分支,永远是功能最新最全的分支
功能分支feature-*新功能分支,某个功能点正在开发阶段
发布版本release-*发布定期要上线的功能
修复分支bug-*修复线上代码的 bug

git相关资源

  1. Git教程 https://www.yiibai.com/git/
  2. Git 工作流程 http://www.ruanyifeng.com/blog/2015/12/git-workflow.html
  3. 常用 Git 命令清单 http://www.ruanyifeng.com/blog/2015/12/git-cheat-sheet.html
  4. Git官方书籍(中文版)https://www.git-scm.com/book/zh/v2
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值