IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发工具 -> 版本控制工具svn、git -> 正文阅读

[开发工具]版本控制工具svn、git

在这里插入图片描述

svn/subversion 集中式版本控制

1.安装

linux
  yum -y install subversion    #内置客户端与服务端

2.命令
服务端

(补充术语:版本库=线上版本库  工作副本=已加入版本控制的本地库)
服务器端命令:
  svnadmin create /path/repos  创建版本库,可以追加相对路径或者绝对路径
    --fs-type   后可追加存储格式选项
      fsfs	常用格式
      dbd
rm   -rvf  /path/repos  删除版本库
svnserve -d -r /svnroot/imooc   运行次版本库
  --listen-port  指定端口

版本库配置及权限管理:
/path/repos/conf/  配置文件位置

  passwd  配置用户名和密码
    user1 = passwd1
    user2 = passwd2
    
  svnserve.conf  配置默认权限、权限配置文件及密码配置文件位置
    anon-access = read/write/none 未经认证用户默认权限
    auth-access =  read/write/none  已认证用户默认权限
    password-db = passwd    passwd文件路径
    authz-db = authz  auth文件路径
    
  auth  配置用户组以及用户组权限	 
    [aliases]  别名 一般不用
		
    [groups]  	用户组   
	  pm = user1
	  dev = user1,user2

	[/]  表示版本库的根目录,多个版本库的auth可以同时指向一个
	@pm = rw			如果是组前缀需要加@
	@dev = r
  	user3 = rw
  	[imooc:/] 表示名为imooc的版本库跟目录
  	@pm = rw
  	user1 = r
  	user2 =	  表示无权限
  	* = r	  *表示所有用户	

客户端命令

Linux:
  mkdir svntest	  && cd svntest	创建一个存放目录
svn 
  co/checkout   svn://192.168.0.1   检出并更新版本库,目录包含.svn隐藏文件夹用来记录工作副本的一切变化,在版本控制之下
    --username  NAME
    --password  PASSWD   
    -r  2	检出版本2
    后面可以不追加用户密码,但是需要输入一下所使用的的系统用户密码
  export   导出,用法与checkout相同,导出目录下无.svn隐藏文件夹,不在版本控制之下 
  add  添加到版本控制
    --non-recursive 不递归增加
    *  表示所以文件
    force  强制执行 
  ci/commit  提交修改到服务端(创建一个新版本号)	
    -m ""  提交备注,必须要加的选项
    --no-unlock 提交文件后不自动解锁
  up/update  全目录更新到最新版本
    -r 1  标识更新到版本1
    *  强制所有副本更新到最新版本
  del/delete/rm/remove    从版本库中删除文件或目录
    -m ""  备注,可不加
    然后需要执行提交操作,相当于版本变化
  diff/di 版本库与本地库差异比较
    -r 2 表示本地库与版本号为2的版本库进行差异比较
    -r 1:3 表示版本库版本为1跟版本为3的内容进行差异比较
    - 前缀表示版本库中最新版本内容
    + 表示本地库内容
    如果有差异会把版本库与本地库都表示出来

在这里插入图片描述
在这里插入图片描述

  mkdir  创建目录并直接加入到版本控制中
  cat 不检测工作副本的情况下直接查看指定文件
    例:svn cat svn://192.168.0.130/index.html
  revert  FILENAME|*  还原本地工作副本最后一次更新的状态(与reset回滚不同,revert会提取你指定的版本并再次提交)
    --recursive  递归还原
  lock  锁定文件,防止其他人员对文件进行提交,当自己进行提交后文件会自动解锁
  unlock
  list/ls  列出当前目录下处于版本控制的所有文件
    --recursive  递归
    -v  详情,依次显示最后一次提交的版本、用户、大小、时间
  status  列出工作副本中的文件(夹)的最后一次被改动后的状态
    标记代表的状态:
      ?  无版本控制
      D  已被标记从版本库中删除
      M  已被编辑过
      A  已被标记增加到版本控制中
      R  文件被替换
      C  文件存在冲突
      !  文件缺失
  log  查看提交日志(来自svn ci的-m参数)
  info  工作副本及文件(夹)的详细信息
    --xml  以xml格式输出
  copy/cp  复制文件或目录并加入到版本库中,可复制多个
    -r  指定版本
    
    示例:
      svn cp  -r 4 index.html  copy.html  指定版本复制
      svn cp index.html copy.html ./temp 多个复制
      svn cp index.html svn://192.168.10.1/imooc/target.html -m " " 跳过版本库直接加到线上版本库中,不能跨库执行
      svn cp svn://192.168.10.1/imooc/target.html index.html 从线上版本库复制到工作副本,支持跨库操作
      svn cp svn://192.168.10.1/imooc/ svn://192.168.10.1/imooc//trunk -m " "  脱离工作副本,不支持跨库
  swich/sw  版本库重径向
    --relocate  重径向
    示例:
      svn sw --relocate svn://192.168.0.1/old  svn://192.168.0.1/new
    

    
windos
  TortoiseSVN : http://tortoisesvn.net/downloads.html  客户端下载地址
  VisualSVN : http://www.visualsvn.com/server/download  服务端下载地址
  安装小乌龟工具
  创建文件夹,并鼠标右击选择 svn检出
  输入svn的URL

代码冲突

代码冲突:多个程序员同时更改相同位置代码,并且更改前并未及时更新本地代码导致版本不同,服务器不知道需要保留哪个版本的修改而产生冲突	
例:提交代码时提示‘is out fo data’ 一般为代码冲突

在这里插入图片描述

代码冲突更新代码时会提示 ‘conflict discovered’
此时会有提示选项:
  p  延迟提交,延迟后会把冲突的内容发送到本地,而不会影响线上版本
    延迟后可以直接编辑源文件进行修改
    也可以#svn resolve FILENME   命令进行解决冲突
  df  差异对比
  e  编辑文件 
  mc  保存自己代码
  tc  保存他人代码
处理完冲突后需要告诉服务端冲突已处理才能进行接下来的提交代码
  #svn resolved FILENAME

在这里插入图片描述

树冲突:非二进制文件冲突,无法精准到行,而且处理树冲突必须处理整个文件

多版本库解决方案:

svn默认端口号:3690

多端口号:
  运行命令:
    svnserver -d -r /svnroot/hello --listen-port 3691
    svnserver -d -r /svnroot/word --listen-port 3692
  检出命令:
    svn co svn://192.168.10.1:3691 SVNNAME1
    svn co svn://192.168.10.1:3691 SVNNAME2
    
多路径方式
  前提条件:多个版本库必须在同一目录下
  运行命令:
    svnserver -d -r /svnroot/
  检出命令:
    svn co svn://192.168.10.1/SVNNAME1
    svn co svn://192.168.10.1/SVNNAME2

主干版本与分支版本:

目的:多版本并行开发
svn cp svn://192.168.10.1/imooc/ svn://192.168.10.1/imooc/trunk -m " " 创建主干版本
svn cp svn://192.168.10.1/imooc/trunk svn://192.168.10.1/imooc/branch -m " "  创建分支版本

管理svn,需重启操作生效

hooks钩子应用
  钩子:当执行某些特定操作时触发执行预先设定好的任务
  可查看版本库中hooks文件夹的模板
  前缀:
    start  表示数据传输开始之前
    pre  数据传输之后,写入版本库之前
    post  写入版本库之后
  添加钩子时需要把后缀删掉然后按需求编写shell脚本  

版本库精简/备份版本库
  停止版本库
    killall svnserver
  备份需要的版本库
    例如备份版本6到16的版本库
    svnadmin dump /svnroot/imooc -r 6:16 > ~/imooc.repo
  创建一个新的版本库
    svnadmin create /svnroot/newimooc
  加载备份数据
    svnadmin load /svnroot/newimooc < ~/imooc.repo
  复制所有配置文件到新版本库
  运行版本库
  客户端需要重新检出工作副本
  注意:精简之后版本库的版本号还是从1开始往后递加  

备份版本库第二中方法
  停止版本库
  把整个版本库目录打包压缩
  复制解压到新服务器上并解压
  在新版本库上运行

git 分布式版本控制

关系:
  git 分布式管理系统
  gitlab  企业私有库
  github  公网共享库,全球最大的代码托管网站、开源网站、交流网站

安装:

Linux
  1.yum -y install git  版本比较老
  2. 编译安装较新版本
    安装依赖
      yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel gcc perl-ExtUtils-MakeMaker
    下载解压
      wget https://github.com/git/git/archive/v2.7.4.zip
      unzip v2.7.4.zip
	  cd git-2.7.4
	编译安装
	  make prefix=/usr/local/git all
      make prefix=/usr/local/git install
      rm -rf /usr/bin/git
	  ln -s /usr/local/git/bin/git /usr/bin/git
	  git --version

  配置用户名和邮箱:
    git config --global user.name 'NAME'
	git config --global user.email 'MAIL'
	git config --global --list  查看
windos
  进入官网,找到下载安装包进行安装

定义:
  四个区域:
    远程仓库
    本地仓库
    暂存区域
    工作目录
  文件的四个状态:
    untracked  未纳入版本控制的状态
    unmodified 纳入本地仓库中(commit)
    modified  修改unmodified状态的文件,状态会变成modified的文件状态,并且从本地仓库回到工作目录中
    staged  纳入版本管理的文件(add);暂存区中

在这里插入图片描述

常用命令:

Linux:
  git
    --version
    init  初始化,并加入版本控制
    add  添加到暂存区
    fetch  拉取
    commit 
      -m
    status  查看改动
      -s  状态概览
    diff
      --staged
    log 
      --author=''  过滤名字
      --pretty=oneline FILE  可查看文件的提交的id和改动注释
      -p FILE  查看文件具体修改的内容
      --oneline  查看简写日志
        --graph  查看版本路线
    rm  从版本库中移除
      --cached FILENAME  从暂存区中移除,并移出版本控制
    mv
    show ID  查看提交的详情 
    checkout (切换指针,可以来回切换,与reset只能回滚不同)
      ID -- FILE  指定文件复位到ID的版本
      -- FILE  工作目录改动后可还原到未改动时的状态
      BRANCHNAME  切换分支
      -b BRANCHNAME  创建并切换分支
    reset  回滚
      --soft ID  回滚版本库到指定ID,工作目录和暂存区不动
      --mixed ID  (默认)回滚版本库到指定ID,缓存区被清空
      --hard ID  回滚版本库到指定ID,暂存区和工作目录复位到ID的版本
        省略ID写法(需大写HEAD):  
          HEAD FILENAME  取消add(追踪)操作,也就是取消暂存区操作
          HEAD^  复位到上一个版本(一个^表示复位一个版本,同理^^表示复位上两个版本)   
          HEAD~2  等同于 HEAD^^      
          例:
          git reset HEAD home/home.html
          git reset HEAD^^ home/home.html
          git reset HEAD~2 home/home.html
      
        
	push  远程推送
	  REPONAME(远程仓库名) 
	    BRANCHNAME(分支)
	    TAGNAME
	    --delete BRANCHNAME  删除远程仓库分支
	pull  直接拉取最新版本的代码并直接与本地合并
	fetch  拉取最新代码,需手动与本地代码合并
	
	tag  查看标签(相当于做一次快照)
	  -a  手动编写注释信息
	  TAGNAME  创建标签,默认加在最新一次的commit上  
	    ID  标签创建在此ID上
	  -d TAGNAME  删除标签
	  
	branch  查看分支 
	  BRANCHNAME  创建分支 
	  -d BRANCHNAME  删除分支
	  -D BRANCHNAME  强制删除
	  -v
	  --merge  查看已合并的分支
	  --no-merge  查看未合并的分支
	merge(master上执行)
	  BRANCHNAME
	  --abort  忽略其他代码,保留原分支代码(代码冲突;也可以手动修改)  
	clong URL BRANCH  远程克隆分支  
	reflog  查看包括reset完成时之前的记录和ID,然后可以通过checkout ID 切换指针,其他不变,可以新建分支合并还原
	remote  显示远程仓库
	-v
	-add  REPONAME URL 添加一个远程库

补充:
  安装谷歌访问助手
    octotree插件
      作用:可以树状显示仓库
      enhanced github
        作用:可查看单个文件的大小,并可以下载单个文件
      gitzip for github
        作用: 直接下载文件夹

gitlab
gitlab包
官网 https://about.gitlab.com/downlads
清华镜像 https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/

安装:

(1)依赖
  sudo yum install curl policycoreutils openssh-server openssh-clients
  sudo systemctl enable sshd
  sudo systemctl start sshd
  sudo yum install postfix
   sudo systemctl enable postfix
  sudo systemctl start postfix
  sudo firewall-cmd --permanent --add-service=http
  sudo systemctl reload firewalld
(2)安装
  rpm -ivh gitlab-ce-7.10.0~omnibus.2-1.x86_64.rpm
(3)配置(ruby语言编写)
  vim /etc/gitlab/gitlab.rb
    external_url 'URL'
  gitlab-ctl reconfigure  配置生效
  gitlab-ctl show-config 验证配置
  gitlab-ctl status  查看
  可以直接访问URL登录界面

组件:
在这里插入图片描述
目录:
在这里插入图片描述

命令:
  gitlab-ctl
    status
    start
    stop
    restart
    tail nginx  查看日志

认证:
  生产中往往会开通ldap统一账户管理中心
  Linux
    通过ssh登录需要生成免密的公钥,导入到gitlab中
    http登录可以通过设置好的账号密码
  Windos
    需要安装一个git客户端其他同Linux
  管理员
    Deploy Keys :只有下载权限的Keys,主要用于jenkins
    
备份
  vim /etc/gitlab/gitlab.rb
    gitlab_rails['backup_path']='/data/backup/gilab'  备份路径
    gitlab_rails['backup_keep_time']=604800   备份有效时间,默认为7天
  gitlab-ctl reconfigure  生效
  gitlab-ctl restart
  创建目录并授权git用户
  crontab -l  创建计划任务备份全库
    0 2 * * * /usr/bin/gitlab-rake gitlab:backup:create

恢复
  停止数据写入服务:
    gitlab-ctl stop unicorn
    gitlab-ctl stop sidekiq
  gitlab-rake gitlab:backup:restore BACKUP=1492296095
  gitlab-ctl restart

邮件通知配置
在这里插入图片描述

sourcetree 工具
  开发工具 最新文章
Postman接口测试之Mock快速入门
ASCII码空格替换查表_最全ASCII码对照表0-2
如何使用 ssh 建立 socks 代理
Typora配合PicGo阿里云图床配置
SoapUI、Jmeter、Postman三种接口测试工具的
github用相对路径显示图片_GitHub 中 readm
Windows编译g2o及其g2o viewer
解决jupyter notebook无法连接/ jupyter连接
Git恢复到之前版本
VScode常用快捷键
上一篇文章      下一篇文章      查看所有文章
加:2022-04-22 18:57:14  更:2022-04-22 18:59:58 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/14 14:56:37-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码