栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

版本控制centos7.5

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

版本控制centos7.5

一、基本概念

 

1、版本库
典型的客户/服务器系统
        - 版本库是版本控制的核心
        - 任意数量客户端
        - 客户端通过写数据库分享代码

 

2、分布式版本控制
1. 集中式版本控制系统
        - 开发者之间共用一个仓库(repository)
        - 所有操作需要联网
2. 分布式版本控制系统
        - 每个开发者都是一个仓库的完整克隆,每个人都是服务器
        - 支持断网操作
3. Git基本概念
        - Git仓库:
                保存所有数据的地方
        - 工作区:
                从仓库提取出来的文件,放在磁盘上供你使用或修改
        - 暂存区:
                就是一个文件,索引文件,保存了下次将提交的文件列表信息
4. 工作流        

 二、常用软件 1、版本控制软件
1. 集中式版本控制软件
        - CVS
        - SVN(Subversion)
2. 分布式版本控制软件
        - Git
        - BitKeeper(收费)

三、Git软件 1、安装Git软件
[root@git ~]# yum -y install git  #安装Git
[root@git ~]# git --version       #查看版本
2、创建服务器版本仓库
[root@git ~]# mkdir -p /var/lib/git/
[root@git ~]# git init /var/lib/git/project --bare        #初始化空仓库
Initialized empty Git repository in /var/lib/git/project/
[root@git ~]# ls /var/lib/git/project/
branches  config  description  HEAD  hooks  info  objects  refs
 3、客户端命令行工具及案例 1. 客户端的子命令
git 支持的子命令操作
clone将远程服务器的仓库克隆到本地
config修改git配置
add添加修改到缓存区
commit提交修改到本地仓库
push提交修改到远程服务器
pull将服务器上的数据更新到本地

2. clone克隆服务器仓库到本地
[root@develop ~]# yum -y install git #客户端安装git
[root@develop ~]# git clone root@192.168.5.111:/var/lib/git/project  #克隆仓库到本地
Cloning into 'project'...
root@192.168.5.111's password:      #输入密码'
warning: You appear to have cloned an empty repository.
[root@develop ~]# ls                 #查询仓库是否克隆
anaconda-ks.cfg  project
[root@develop ~]# cd project/
[root@develop project]# ls
[root@develop project]# git remote -v    #查看服务器信息
origin	root@192.168.5.109:/var/lib/git/project (fetch)
origin	root@192.168.5.109:/var/lib/git/project (push)
3. config修改git配置(客户端用户标记信息(与Git账户和密码无关))
[root@develop project]# git config --global user.email "you@example.com"  
[root@develop project# git config --global user.name "caixm"
[root@develop project]# cat ~/.gitconfig 
[user]
	email = you@example.com
	name = caixm
4. 导入数据,add提交本地暂存区(必须进入p工作目录project操作)
[root@develop project]# echo "hello world" > test.txt  #编写新文件
[root@develop project]# mkdir demo             #创建目录
[root@develop project]# cp /etc/hosts demo/    #拷贝文件至目录
[root@develop project]# git status             #查看本地仓库中数据的状态
# On branch master
#
# Initial commit
#
# Untracked files:
#   (use "git add ..." to include in what will be committed)
#
#	demo/
#	test.txt
nothing added to commit but untracked files present (use "git add" to track)
[root@client project]# git add .              #将工作区的修改提交到暂存区
 5. commit提交本地仓库
[root@client project]# git commit -m "new files and directories"  #提交本地仓库,并添加注释
[master (root-commit) ba6fc2b] new files and directories  #
 2 files changed, 3 insertions(+)
 create mode 100644 demo/hosts
 create mode 100644 test.txt
[root@develop project]# git status
# On branch master
nothing to commit, working directory clean
 6. push将本地修改提交到远程服务器仓库
push.default 定义如何推送(更安全地推送)
[root@develop project]# git config --global push.default simple #定义推送方式
[root@develop project]# git remote -v        #查看远程服务器信息
origin	root@192.168.5.109:/var/lib/git/project (fetch)
origin	root@192.168.5.109:/var/lib/git/project (push)
[root@develop project]# git push origin      #将数据推送至origin服务器
[root@develop project]# git push    #推送
root@192.168.5.111's password:     #输入服务器root密码'
Counting objects: 5, done.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (5/5), 361 bytes | 0 bytes/s, done.
Total 5 (delta 0), reused 0 (delta 0)
To root@192.168.5.111:/var/lib/git/project
 * [new branch]      master -> master
[root@develop project]# git status   #查询是否有新增内容
# On branch master
nothing to commit, working directory clean
7.pull 从远程下载
[root@develop project]# git pull  #将服务器上的数据更新到本地
8. log 查看历史日志
[root@client project]# git log                    #查看日志
commit ba6fc2bb96b89c9daced11a1933043aeea77ed6d
Author: caixm 
Date:   Tue May 31 19:14:40 2022 +0800

    new files and directories
[root@client project]# git log --pretty=oneline
ba6fc2bb96b89c9daced11a1933043aeea77ed6d new files and directories
[root@client project]# git reflog                #方便后期回滚数据
ba6fc2b HEAD@{0}: commit (initial): new files and directories
4、HEAD指针 1. HEAD指针概述

①. HEAD指针是一个可以在任何分支和版本移动的指针

②. 通过移动指针可以将数据还原至任何版本

2.  移动HEAD指针

①.使用log指令查看版本信息

[root@develop project]# git log --pretty=oneline
d098a04602b1ea928af9c6b5619e31346eed9fa8 new files and directories

②. 回滚到d098a这个版本

[root@develop project]# rm -rf demo/ init.txt  #删除数据
[root@develop project]# ls
[root@develop project]# git reset --hard d098a #回滚到指定版本
HEAD is now at d098a04 new files and directories
[root@develop project]# ls                     #资料已还原
demo  init.txt
 5、Git分支 1. 分支的基本概念
①. 分支可以让开发分多条主线同时进行,每条主线互不影响
        - 按功能模块分支、按版本分支
        - 分支也可以合并
②. 常见的分支规范
        - MASTER分支(MASTER是主分支,是代码的核心)
        - DEVELOP分支(DEVELOP最新开发成果的分支)
        - RELEASE分支(为发布新产品设置的分支)
        - HOTFIX分支(为了修复软件BUG缺陷的分支)
        - FEATURE分支(为开发新功能设置的分支)

2. 管理多分支

①. 查看当前分支

[root@develop project]# git branch -v
* master d098a04 new files and directories

②. 创建分支 

[root@develop project]# git branch hotfix     #创建hotfix分支
[root@develop project]# git branch feature    #创建feature分支
[root@develop project]# git branch -v
  feature d098a04 new files and directories
  hotfix  d098a04 new files and directories
* master  d098a04 new files and directories   #当前所处分支

③. 切换分支

[root@develop project]# git checkout hotfix  #切换到hotfix分支
Switched to branch 'hotfix'
[root@develop project]# git branch -v
  feature d098a04 new files and directories
* hotfix  d098a04 new files and directories  #*号代表当前所处分支
  master  d098a04 new files and directories

在新的分支上就可以继续修改代码
    - 修改文件、创建文件等操作
    - 正常add,commit提交版本库

④. 合并分支(合并前一定要切换至主分支)

[root@develop project]# git checkout master  #切换至主分支
Switched to branch 'master'
[root@develop project]# git merge hotfix     #合并分支
Already up-to-date.

⑤. 解决分支冲突

[root@develop project]# git checkout hotfix #切换至hotfix分支
Switched to branch 'hotfix'
[root@develop project]# vim a.txt    #内容aaa
[root@develop project]# git add a.txt #修改文件并提取
[root@develop project]# git commit -m "hotfix"  
[hotfix bf7d1ec] hotfix
 1 file changed, 1 insertion(+)
 create mode 100644 a.txt
[root@develop project]# git checkout master  #切换至主分支
Switched to branch 'master'
[root@develop project]# vim a.txt    #内容bbb
[root@develop project]# git add a.txt 
[root@develop project]# git commit -m "hotfix"
[master e342f4c] hotfix
 1 file changed, 1 insertion(+)
 create mode 100644 a.txt
[root@develop project]# git merge hotfix     #合并时冲突
Auto-merging a.txt    #自动合并a.txt
CONFLICT (add/add): Merge conflict in a.txt  #合并冲突于a.txt
Automatic merge failed; fix conflicts and then commit the result. #自动合并失败,修正冲突然后提交修正的结果
[root@develop project]# cat a.txt
<<<<<<< HEAD
bbb
=======
aaa
>>>>>>> hotfix
[root@develop project]# vim a.txt    #修改冲突文件:改为aaa或者bbb
[root@develop project]# git add .
[root@develop project]# git commit -m "resolve"
[master 482b72d] resolve
3. 分支与HEAD指针的关系
创建分支的本质是在当前提交上,创建一个可以移动的指针
        - 根据HEAD这个特殊的指针判断当前分支
        - 切换分支,只是移动HEAD指针
        - 其它分支的提交,不会影响master;master分支提交也不影响其它分支

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/964755.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号