-
版本控制
- 发展历史
- CVS : 远古时代的版本控制软件
- SVN : 集中式源代码管理器
- GIT : 分布式源代码管理器
- 集中式和分布式版本管理器的区别
- 集中式版本管理器只在远程服务器上安装代码数据库 , 本地只能远程访问 , 下载需要的源文件 , 本地将源文件编辑完成 , 再上传到远程代码数据库
- 分布式版本管理器在本地也安装了代码数据库 , 可以在本地进行版本管理 , 将希望上传的版本上传至远程数据库
- 集中式版本控制每个文件都有隐藏的文件夹与之对应
- 分布式版本控制只有根目录会有隐藏文件夹
- 简介 : 版本管理器就是将我们在编写代码时 , 出现的我们需要保留的版本 , 修改的bug , 增加的功能 , 等不同阶段的我们希望保留下来的代码或者编辑记录 , 通过上传代码数据库的方式记录下来 , 方便程序员划分功劳 , 升级代码.
-
Git工作原理
工作区
: 就是.git隐藏文件夹所在的目录 ,用于存放需要需要管理的源文件 , 我们要想看到隐藏文件夹 , 需要在查看里设置 , 通常我们新建一个项目文件夹 , 在里面初始化仓库(代码数据库)- 版本库
版本库
就是.git文件夹中的内容暂缓区
: 工作区的文件要想进行版本管理 , 必须先把它上传到暂缓区分支
: 分支就是文件最终的存储位置 , 默认的分支就是master , 即所有版本控制的文件信息都在master目录下- head指针 : 指向当前文件的存储分支 , 默认指向分支master
-
Git单机版使用说明
- 下载git , 验证有没有下载成功 , 只需要右击 , 看会不会多出两个关于git的选项 , 或者cmd , 在命令行中输入git [--v] , 查看安装的git版本
- 创建仓库 : 首先新建一个项目管理文件夹 , 在文件夹中右击 , 打开git的终端控制程序 , 输入
git init
, 即可在此文件夹中创建版本库 , 验证有没有创建成功 , 只需要在查看中勾选显示隐藏文件夹即可 , 如果当前目录下出现.git文件夹说明创建成功- 配置信息 : 我们需要给这个项目配置相关信息 , 必要的有两个
- 用户名 :
git config user.name "用户名"
- 用户邮箱(便于其它人联系作者) :
git config user.email "邮箱地址"
git config -r
: 查看当前版本库的配置信息- 在工作区创建文件(任何类型)
- 将文件添加到版本库暂缓区 :
git add 文件名
,git add .
(将当前全部文件添加到暂缓区) >* 查看当前版本库的状态 :git status
, 工作区的文件显示红色
, 暂缓区的文件显示绿色
, 分支下的文件显示无色
- 将暂缓区的文件移到当前分支 :
git commit -m"说明信息"
- 查看提交日志
- 详细 :
git log
- 简短 :
git reflog
- 更改文件 : 工作区中已经提交过的文件如果修改了 , 需要重新提交
- 查看文件最新改动的地方 :
git diff 文件名
,git diff
(查看当前路径所有文件最新改动的地方)- 让当前工作区文件回到上一个版本 :
git reset --hard HEAD^
(一个^代表回到上一个版本) ,git reset --hard HEAD~N
(代表回到上N个版本)- 让当前工作区文件回到指定版本 : git reflog(查看版本编号) ,
git reset --hard 版本编号
- 删除工作区文件 :
git rm 文件名
- 将删除文件从版本库移除(在版本库中记录删除文件操作) :
git commit -m"删除文件名"
- 设置不能提交的隐私文件 : 企业开发专用链接(在这里把不同语言中 , 企业不能提交的文件都设置好了) , 对于个人来说 , 我们需要在工作区新建 .gitignore文件 , 这个文件需要在当前目录下 , cmd进入命令行 , 输入
type NUL > .gitignore
创建 , 将不能提交的文件名称
放入这个文件夹 , 就不会再版本控制中看到关于这个文件的任何信息
-
Git团队开发使用说明
- 概要 : 与单人开发不同的是 , Git团队开发需要多个人同时对项目进行开发 , 项目经理会先在服务器上初始化一个
共享仓库
, 这个共享仓库可以在任何存储设备上 , 区别在于一个需要通过url下载 , 一个需要通过路径下载 , 个人只需要将这个共享仓库下载到本地 , 进行版本控制 , 将可以运行的代码版本 , 提交到共享仓库就可以了- 流程 :
- 初始化共享仓库 :
git init --bare
(不要直接在远程仓库写代码 , 要程序员写就可以了 , 他们在远程服务器上下载仓库)- 拷贝远程仓库到本地 :
git clone 远程仓库地址
- 配置 :
git config user.name "你的名称"
,git config user.email "你的邮箱地址"
- 提交 :
add . / 文件名称
,git status
(查看是否提交成功) ,git commit -m"我提交的代码"
(提交到head指针指向的分支 , 默认是master分支)- 更新远程数据库 : 如果远程数据库有更新 , 必须同步到本地 , 才能提交新的代码 ,
git pull
- 提交到远程数据库 :
git push
- 补充说明 :
git config -l
(以列表的形式查看当前配置) ,git status
(查看工作区和暂缓区文件状态) ,git diff
(对比工作区文件和提交文件之间的差异) ,git reset --hard^^ / --hard~N / --hard 版本号
(通过git reflog
查看)
-
Git协同模型
- 概要 : 有时候由于市场原因 , 老板要求新添加功能 , 但是作为项目经理 , 我不确定这个功能能在项目截至时间内完成 , 我会新开一个分支 , 让比较牛的人去开发这个功能 , 新开的分支 , 会继承主分支的所有内容 , 在开发完后 , 可以和主分支合并 , 没有开发完 , 也不会影响主分支的进程
- 流程
- 查看仓库有多少分支 :
git branch
( * 代表头指针指向的分支)- 新建一个分支 :
git branch 分支名称
- 切换分支 :
git checkout 分支名称
(新建分支会保存master分支所有记录)- 合并分支 :
git merge 分支名称
(将指定分支合并到主分支中)- 删除分支 :
git branch -d 分支名称
(删除指定分支)
-
划重点
- 单人开发
- 在工作区中打开git终端
- 通过git init指令 , 初始化版本库
- 编写代码
- 将编写的代码通过git add , 添加到版本库的暂缓区
- 通过git commit -m"说明" 将暂缓区的文件添加到HEAD指针指向的分支中 ( 默认只有一个分支 , master分支 , 也称之为主分支)
- 通过git log查看我们每次添加修改的内容
- 通过git diff 查看当前文件和版本库中文件的差异
- 通过git reset --hard 版本号 在任意版本之间切换
- 多人开发
- 项目负责人在服务器上的工作区中打开git终端
- 通过git init --bare , 初始化一个共享的版本库
- 项目负责人通过git clone从远程服务器上下载共享的版本库到本地
- 编写代码
- 将编写的代码通过git add . 添加到版本库的暂缓区中
- 通过git commit -m"说明" 将暂缓区的文件添加到HEAD指针指向的分支中
- 注意 !! 一定不要将不能运行的代码提交到远程的版本库
- 一般情况下 , 在企业开发中 , 本地的提交可能稍微频繁一些 , 但是提交到远程服务器的操作不会那么频繁 , 一般情况下一天最多两次
- 通过 git push 将本地编写好的代码提交到远程服务器的版本库
- 其它开发人员可以通过 git clone或者git push从远程服务器获取最新的代码
- 注意点 !!!!
- 在企业开发中 , 如果有其它同事往服务器上提交了新的代码 , 那么我们就没办法直接提交 , 如果我们想要提交 , 那么我们必须先将服务器上的代码更新到本地
- 更新到本地之后 , 如果没有代码冲突 , 那么可以直接提交
- 更新到本地之后 , 如果有代码冲突(在同一个文件的同一行编辑了代码) , 那么必须先手动解决了冲突 , 才能提交
在企业开发中 , 一定要记住 , 千万不要好几天都不提交代码 , 否则后果非常严重 , 很多烂屁股等你擦 , 一般情况下 , 一旦分配给自己的某个功能实现了就立即提交到远程服务器 , 或者分配给你的任务中 , 某个模块实现了就立即提交到远程服务器 , 只要保证提交到远程服务器的代码是可以运行的就行
网友评论