1 版本控制介绍
1.1 定义
版本控制是对软件开发过程当中的各种程序代码,配置文件,说明文档等文件变更的管理,是软件配置管理的核心思想之一。
1.2 原由
编写一个成熟可用的程序是一个工作很大的工程,不是我们或一次性可用搞定工作,所以在开发过程当中,有以下特点:
多人协作:UI、前端、后端、数据库、运维
1.3 版本迭代
针对当前代码进行修改和升级,通过几次迭代,达到预想的目的
1.4 版本控制工具
1.4.1 分类
CVS 是一个c/s结构的版本控制软件,主要用于开源的软件管理,是多个开发人员通过一个版本控制中心系统来记录文件版本,从而达到保证文件同步的目的,是一种很古老的集中式版本控制工具。
SVN 也是集中式版本控制工具,他是最优秀的集中式版本控制工具。
GIT 是一个分布式的版本控制工具
1.4.2 区别
(1)集中式版本管理工具
缺点:代码集中于SVN服务器上,一旦发生问题,很难挽回
优点:代码集中于SVN服务器上,不会发生个别新手污染代码的情况
(2)分布式版本控制
1.4.2 版本控制常用名词
拉取 pull 从服务端下载代码
提交 push commit 提交代码
合并 将两份代码进行结合
冲突 两个开发版本对同一个文件有不同的修改,这时合并会有 冲突
描述 所有提交的版本都必须有详细的版本描述,内容比如:
时间:提交人:提交的功能
回溯 进行版本内容的回滚。
1.5 git的发源
git的作者是linux之父linus torvalds。
在起初,linux开源项目的代码是有linus本人通过linux命令diff和patch两条命令手动完成,后来项目越来越大,代码库让linus疲于奔命。Bitkeeper公司的东家BTMover出于人道主义(bitkeeper是一款收费的版 本控制工具),授权linux社区免费使用,但是Linux社区的大佬有一些江湖习气,开始破解bitkeeper,samba的作者andrew破解成功了,但是被BTMOver公司发现,收回免费使用权,要求linus道歉。linus闭关一周,写出了git,在一个月,git成功接管了Linux社区的版本控制工作,并且开始开源。
1.6 git的原理
Git分为本地库和远程库。
我们提交代码的步骤
2 Git基本操作
2.1 安装
(1)通过官网下载git的安装包,git官网地址: https://git-scm.com/
(3)下载完成得到exe文件,双击运行安装
(4)安装完成之后,在windows下的任意目录右键可以看到git的命令行
2.2 基本使用
(1)git bash执行linux的命令
(2)git 需要把当前的目录转换为git目录
git init 初始化一个git目录
(3)创建git项目提交身份
- 配置局部身份
git config user.name laobian 设置提交名
git config user.email laobian@qq.com 设置提交邮箱
cat .git/config 查看局部提交身份
- 配置全局身份
git config --global user.name laobian 设置全局提交名
git config --global user.email laobian@qq.com 设置全局提交邮箱
cat ~/.gitconfig 查看全局提交身份
- 就近原则:有局部用局部,没有局部用全局,二者不可以都没有
(4)查看当前版本的状态
git status
未提交状态
(5)将文件提交到缓冲区并查看没有提交到本地库的状态
(6)提交文件到本地库
git commit 1.txt
(7)git commit -m “描述” 文件 提交指定文件(和步骤6任选一种提交)
git commit -m “描述” 提交当前缓冲库当中的所有文件
提交完成的状态
(8)查看详细版本信息
(9)列表性展示版本信息
3 指针(HEAD)和分支(branch)
3.1 概念介绍
指针:用来指向某个版本的记录
分支:一个独立的开发路线。
3.2 建立和使用分支
(1)创建分支
项目创建之初就有一个分支(branch) master,但是我们还可以创建新的分支
git branch 分支名称 创建分支
(2)查看分支
git branch -v
(3)切换分支
git checkout 分支名称
(4)合并分支
git merge 待合并分支名称
(5)合并冲突
冲突的文件里面展示的冲突的内容
解决完冲突内容进行一次提交,当次提交不指定具体提交的文件名称
3.3 解决冲突的步骤
解决冲突的步骤
进行合并
进入冲突文件,进行手动的代码调整
进行add将冲突文件添加到缓冲区
进行commit提交,注意不要指定具体提交的文件名称
冲突解决完成
4 Github的使用
4.1 官网
4.2 注册流程
4.3 使用
(1)搜索git项目
(2)以压缩的形式下载
(3)克隆项目
(4)创建版本仓库,也就是项目的远程库
(5)上传
首先关联本地库
(6)测试和github的通信
4.4 协作
4.4.1我们要加入大牛的项目fork模式
(1)找到项目,进行fork
(3)获取项目完整的源码
git clone自己账号的项目
(4)修改源码
(5)申请提交源码
(6)等待大牛允许分支
4.4.2 我们要合作开发一个项目
(1)进入设置
(2)点击collaborators(合作者)
(3)点击右下角add collaborators
(4)将生成的连接复制
(5)用另一个账号打开当前的连接,点击接受
4.4.3 团队模式
(1)进入设置的organizations
(2)创建团队
(3)邀请成员
4.5 和pycharm与git的通常用法
Ctrl+k 等于命令行add+commit命令
Ctrl+shift+k 等于命令行的push命令
5 拓展GITLIB的搭建
5.1 简介
gitlib 自己的git管理工具。
5.2 Centos7 搭建gitlib服务器
(1)安装依赖包和wget
yum install -y curl policycoreutils-pythonopenssh-server
Yum install -y wget
(2)准备工作ssh、防火墙、Postfix服务处于开启状态
(3)下载gitlib的安装包
Wget https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-10.0.0-ce.0.el7.x86_64.rpm
(4)安装:
(5)修改配置文件
(6)重新加载配置文件 gitlab-ctl reconfigure
(7)重启服务 gitlab-ctl restart
(8)关闭防火墙
(8)访问刚才绑定的ip和端口,默认端口 80
6 fetch步骤
提供资源git
https://github.com/bianjhpython
获取资源git
首先pythonbian通过地址找到bianjhpython 进行fork
Python边选择fork bianjhpython的项目
Pythonbian有了bianschool项目
克隆自己的git上的fork的库,而不是源git的库
这个时候源发起了更新
查看分支
查看别名
当前origin映射自己的git库
创建一个新的分支,用来合并源git的master分支
创建一个新的别名,用来执行源库
在master使用new_name别名fetch源库的master到本地new
6、将本地new分支上获取的内容merge到master上
将修改的master提交到自己的git fork的库上,用来保持一致
Git push 别名 分支