1-git版本控制

2019-02-27  本文已影响8人  梦想成为小仙女


  • 发展历史
    • CVS : 远古时代的版本控制软件
    • SVN : 集中式源代码管理器
    • GIT : 分布式源代码管理器
  • 集中式和分布式版本管理器的区别
    • 集中式版本管理器只在远程服务器上安装代码数据库 , 本地只能远程访问 , 下载需要的源文件 , 本地将源文件编辑完成 , 再上传到远程代码数据库
    • 分布式版本管理器在本地也安装了代码数据库 , 可以在本地进行版本管理 , 将希望上传的版本上传至远程数据库
    • 集中式版本控制每个文件都有隐藏的文件夹与之对应
    • 分布式版本控制只有根目录会有隐藏文件夹
  • 简介 : 版本管理器就是将我们在编写代码时 , 出现的我们需要保留的版本 , 修改的bug , 增加的功能 , 等不同阶段的我们希望保留下来的代码或者编辑记录 , 通过上传代码数据库的方式记录下来 , 方便程序员划分功劳 , 升级代码.


  • 工作区 : 就是.git隐藏文件夹所在的目录 ,用于存放需要需要管理的源文件 , 我们要想看到隐藏文件夹 , 需要在查看里设置 , 通常我们新建一个项目文件夹 , 在里面初始化仓库(代码数据库)
  • 版本库
    • 版本库就是.git文件夹中的内容
    • 暂缓区 : 工作区的文件要想进行版本管理 , 必须先把它上传到暂缓区
    • 分支 : 分支就是文件最终的存储位置 , 默认的分支就是master , 即所有版本控制的文件信息都在master目录下
    • head指针 : 指向当前文件的存储分支 , 默认指向分支master


  • 下载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团队开发需要多个人同时对项目进行开发 , 项目经理会先在服务器上初始化一个共享仓库 , 这个共享仓库可以在任何存储设备上 , 区别在于一个需要通过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 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从远程服务器获取最新的代码
  • 注意点 !!!!
    • 在企业开发中 , 如果有其它同事往服务器上提交了新的代码 , 那么我们就没办法直接提交 , 如果我们想要提交 , 那么我们必须先将服务器上的代码更新到本地
    • 更新到本地之后 , 如果没有代码冲突 , 那么可以直接提交
    • 更新到本地之后 , 如果有代码冲突(在同一个文件的同一行编辑了代码) , 那么必须先手动解决了冲突 , 才能提交

在企业开发中 , 一定要记住 , 千万不要好几天都不提交代码 , 否则后果非常严重 , 很多烂屁股等你擦 , 一般情况下 , 一旦分配给自己的某个功能实现了就立即提交到远程服务器 , 或者分配给你的任务中 , 某个模块实现了就立即提交到远程服务器 , 只要保证提交到远程服务器的代码是可以运行的就行

上一篇下一篇

猜你喜欢

热点阅读