Git版本控制系统-本地仓库
git介绍
不管是做为程序员还是运维工程师,很多人一定都听说过GItHub
分布式版本控制系统
什么是系统?
就是一个应用程序,部署起来,供我们来使用
什么是版本控制?
不管是在企业中,还是我们个人,我们一定都做过版本控制
比如:
1.写脚本,一遍一遍的修改
2.写大学论文
3.写技术文档
什么是分布式
因为Git是分布式的,所以Git支持离线工作,在本地可以进行很多操作,包括接下来将要重磅推出的分支功能
CDN:分布式静态资源缓存系统
Git部署
# 本地仓库安装git
[root@db01 ~]# yum install -y git
# 查看版本
[root@db01 ~]# git --version
git version 1.8.3.1
Git基础操作
场景一
老板:给我写一个官网
程序猿:一天一夜,写出来了,请CEO过目
# html代码
[root@db01 code]# vim index.html
<!DOCTYPE html>
<html lang="zh">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>代码迭代过程</title>
</head>
<body>
<div id="demo"></div>
<script src="src.js"></script>
</body>
</html>
# js代码
[root@db01 code]# vim src.js
const string = '老板好,我是程序猿:您让我写的官网页面,它会动'
let n = 1
demo.innerHTML = string.substring(0,n)
setInterval(()=>{
n+=1
demo.innerHTML = string.substring(0,n)
},200)
老板:不够醒目,再改改
程序猿:好嘞,花了一周时间,请CEO过目
# html代码
[root@db01 code]# vim index.html
<!DOCTYPE html>
<html lang="zh">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="style.css">
<title>代码迭代过程</title>
</head>
<body>
<div id="demo"></div>
<script src="src.js"></script>
</body>
</html>
# js代码
[root@db01 code]# vim src.js
const string = '老板好,我是程序猿:您让我写的官网页面,它会动'
let n = 1
demo.innerHTML = string.substring(0,n)
setInterval(()=>{
n+=1
demo.innerHTML = string.substring(0,n)
},200)
# CSS代码
[root@db01 code]# vim style.css
#demo{
border: solid 1px red;
width: 410px;
height: 25px;
background-color: lightpink;
}
老板:还是之前的好看,改回去吧。
程序猿:emmmmmm... 老子不干了。妈的,我该怎么撤回一周内容?
如果你有了GIT就不用再担心上面的场景了,操作如下:
第一版
# 1.创建一个写代码的目录
[root@db01 www]# mkdir /www/code
# 2.将目录初始化成git仓库
[root@db01 code]# git init .
[root@db01 code]# git init /www/code
# 3.查看本地仓库状态
[root@db01 code]# git status
# On branch master
#
# Initial commit
#
nothing to commit (create/copy files and use "git add" to track)
# 4.编写代码
[root@db01 code]# vim index.html
<!DOCTYPE html>
<html lang="zh">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>代码迭代过程</title>
</head>
<body>
<div id="demo"></div>
<script src="src.js"></script>
</body>
</html>
# 5.本地仓库状态更新
[root@db01 code]# git status
# On branch master
#
# Initial commit
#
# Untracked files:
# (use "git add <file>..." to include in what will be committed)
#
# index.html
nothing added to commit but untracked files present (use "git add" to track)
# 6.编写js代码
[root@db01 code]# vim src.js
const string = '老板好,我是程序猿:您让我写的官网页面,它会动'
let n = 1
demo.innerHTML = string.substring(0,n)
setInterval(()=>{
n+=1
demo.innerHTML = string.substring(0,n)
},200)
# 7.本地仓库状态更新
[root@db01 code]# git status
# On branch master
#
# Initial commit
#
# Untracked files:
# (use "git add <file>..." to include in what will be committed)
#
# index.html
# src.js
nothing added to commit but untracked files present (use "git add" to track)
# 8.编辑nginx配置文件
[root@db01 code]# vim /etc/nginx/conf.d/www.conf
server{
listen 80;
server_name _;
index index.html;
root /www/code;
}
# 9.将文件上传到仓库中
[root@db01 code]# git add .
# 10.再次检查状态
[root@db01 code]# git status
# On branch master
#
# Initial commit
#
# Changes to be committed:
# (use "git rm --cached <file>..." to unstage)
#
# new file: index.html
# new file: src.js
#
# 11.编辑邮箱与名称
[root@db01 code]# git config --global user.email "you@example.com"
[root@db01 code]# git config --global user.name "Your Name"
# 12.保存当前一个版本
[root@db01 code]# git commit -m 'v1.1 官网'
[master (root-commit) b3e4445] v1.1 官网
2 files changed, 21 insertions(+)
create mode 100644 index.html
create mode 100644 src.js
# 13.查看git提交日志
[root@db01 code]# git log
commit b3e444564930fabe39116e6af9bff2c7ae07b814
Author: Your Name <you@example.com>
Date: Tue Aug 22 12:18:38 2023 +0800
v1.1 官网
第二版
# 14.html代码
[root@db01 code]# vim index.html
<!DOCTYPE html>
<html lang="zh">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="style.css">
<title>代码迭代过程</title>
</head>
<body>
<div id="demo"></div>
<script src="src.js"></script>
</body>
</html>
# 15.js代码
[root@db01 code]# vim src.js
const string = '老板好,我是程序猿:您让我写的官网页面,它会动'
let n = 1
demo.innerHTML = string.substring(0,n)
setInterval(()=>{
n+=1
demo.innerHTML = string.substring(0,n)
},200)
# 16.CSS代码
[root@db01 code]# vim style.css
#demo{
border: solid 1px red;
width: 410px;
height: 25px;
background-color: lightpink;
}
# 17.将文件上传到仓库中
[root@db01 code]# git add .
# 18.保存当前一个版本
[root@db01 code]# git commit -m 'v1.2 官网'
反复回滚
# 19.查看git版本
[root@db01 code]# git reflog
bff047b HEAD@{0}: commit: v1.2 官网
b3e4445 HEAD@{1}: commit (initial): v1.1 官网
# 20.回滚至第一版
[root@db01 code]# git reset --hard b3e4445
HEAD is now at b3e4445 v1.1 官网
# 21.查看git版本
[root@db01 code]# git reflog
b3e4445 HEAD@{0}: reset: moving to b3e4445
bff047b HEAD@{1}: commit: v1.2 官网
b3e4445 HEAD@{2}: commit (initial): v1.1 官网
# 22.回滚至第二版
[root@db01 code]# git reset --hard bff047b
HEAD is now at bff047b v1.2 官网
版本回滚
# 查询git日志
[root@db01 code]# git log
commit bff047b95d5399285d7ddd108e6c4903fb07974c
Author: Your Name <you@example.com>
Date: Tue Aug 22 15:55:36 2023 +0800
v1.2 官网
commit b3e444564930fabe39116e6af9bff2c7ae07b814
Author: Your Name <you@example.com>
Date: Tue Aug 22 12:18:38 2023 +0800
v1.1 官网
# 版本回滚
[root@db01 code]# git reset --hard commit号
# 查看git版本
[root@db01 code]# git reflog
bff047b HEAD@{0}: commit: v1.2 官网
b3e4445 HEAD@{1}: commit (initial): v1.1 官网
git状态:
Untracked 还没有在git仓库中的文件
Changes 新文件以及被添加到git仓库中
Unmodified 没有被修改的状态
modified 以及在git仓库中的文件,但是是针对上一次commit后被修改了
git工作区域的切换
场景二
老板:给我写一个官网
程序猿:花了一天一夜,做出来了,请老板过目
# html
[root@db01 code]# vim index.html
<!DOCTYPE html>
<html lang="zh">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>代码迭代过程</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<div id="demo">澳门皇家DC</div>
<div id="demo2"></div>
<script src="main.js"></script>
</body>
</html>
# css
[root@db01 code]# vim style.css
#demo2{
margin-top: 50px;
}
# js
[root@db01 code]# vim main.js
const string = '官网内容:澳门首家线上DC,性感荷官在线发牌,快来注册吧.'
let n = 1
demo2.innerHTML = string.substring(0,n)
setInterval(()=>{
n+=1
demo2.innerHTML = string.substring(0,n)
},200)
# 1.加入缓存区
git add .
# 2.提交到本地仓库
git commit -m 'v1.1 官网'
老板:有点丑,我希望背景颜色是yellow,醒目一些。
老板秘书:我觉得不错,要是字体能做彩色的就好了。
程序猿:MMP,你们的意见就不能统一一下么?
git 分支
此时此刻,聪明的程序猿已经开始使用分支功能了。
# git branch
1.基于当前的commit,创建一个新的分支
2.在哪个分支提交的,代码就会出现在哪个分支
git checkout
1.用于切换另一个分支
2.当前目录有未提交的代码,只要跟另一个分支不冲突,就不需要理会
3.如果冲突了,可以使用通灵术 git stash 也可以合并冲突
## 查看当前分支
[root@db01 code]# git branch
* master
## 创建ceo分支
[root@db01 code]# git branch ceo_branch
[root@db01 code]# git branch
ceo_branch
* master
## 切换分支
[root@db01 code]# git checkout ceo_branch
D src.js
Switched to branch 'ceo_branch'
[root@db01 code]# git branch
* ceo_branch
master
## 创建mishu分支
[root@db01 code]# git branch mishu_branch
[root@db01 code]# git branch
* ceo_branch
master
mishu_branch
需求一:黄色背景
# html
<!DOCTYPE html>
<html lang="zh">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>代码迭代过程</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<div id="demo">澳门皇家DC</div>
<div id="demo2"></div>
<script src="main.js"></script>
</body>
</html>
# css
body{
background-color: yellow;
}
#demo2{
margin-top: 50px;
}
# js
const string = '官网内容:澳门首家线上DC,性感荷官在线发牌,快来注册吧.'
let n = 1
demo2.innerHTML = string.substring(0,n)
setInterval(()=>{
n+=1
demo2.innerHTML = string.substring(0,n)
},200)
# 1.加入缓存区
[root@db01 code]# git add .
# 2.提交到本地仓库
[root@db01 code]# git commit -m 'v1.2 修改黄色背景'
# 3.如果要删除分支
git branch -D 分支名
需求二:彩色字体
# 切换到秘书分支
git checkout mishu_branch
# html
<!DOCTYPE html>
<html lang="zh">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>代码迭代过程</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<div id="demo">澳门皇家DC</div>
<div id="demo2"></div>
<script src="main.js"></script>
</body>
</html>
# js
const string = '官网内容:澳门首家线上DC,性感荷官在线发牌,快来注册吧.'
let n = 1
demo2.innerHTML = string.substring(0,n)
setInterval(()=>{
n+=1
demo2.innerHTML = string.substring(0,n)
},200)
# css
#demo2{
margin-top: 50px;
}
#demo2{
margin-top: 50px;
}
#demo,#demo2 {
display: block;
/*渐变背景*/
background-image: -webkit-linear-gradient(left, #3498db, #f47920 10%, #d71345 20%, #f7acbc 30%,
#ffd400 40%, #3498db 50%, #f47920 60%, #d71345 70%, #f7acbc 80%, #ffd400 90%, #3498db);
color: transparent; /*文字填充色为透明*/
-webkit-text-fill-color: transparent;
-webkit-background-clip: text; /*背景剪裁为文字,只将文字显示为背景*/
background-size: 200% 100%; /*背景图片向水平方向扩大一倍,这样background-position才有移动与变化的空间*/
/* 动画 */
animation: masked-animation 4s infinite linear;
}
@keyframes masked-animation {
0% {
background-position: 0 0; /*background-position 属性设置背景图像的起始位置。*/
}
100% {
background-position: -100% 0;
}
}
# 1.加入缓存区
[root@db01 code]# git add .
# 2.提交到本地仓库
[root@db01 code]# git commit -m 'v1.3 修改彩色字体'
# 3.如果要删除分支
git branch -D 分支名
思考:场景三(git merge)
老板:昨天夜里我和秘书达成一致了,两个版本都要,我在上面,秘书在下面
程序猿:OK,那我合并一下
git分支合并
首选,我们需要明确,我们到底要保留哪个分支,毋庸置疑,肯定是master分支。
因为所有的代码,都是在master的基础上去修改的,在企业中也是这样的,首先有一个写好的基础代
码框架。
然后拆分不同的功能(不同的分支),那么分支开发完毕,没有太大问题,则可以将分支内容合并到
主干(master)上,即便是出了问题,我们也可以根据提交的版本号进行回滚操作。
## 需要保留的分支,直接切换进去
[root@db01 code]# git checkout master
D src.js
Switched to branch 'master'
[root@db01 code]# git branch
ceo_branch
* master
mishu_branch
## 合并CEO分支
[root@db01 code]# git merge ceo_branch
Updating cbcfec4..112f9a1
Fast-forward
style.css | 3 +++
1 file changed, 3 insertions(+)
## 合并秘书分支
[root@db01 code]# git merge mishu_branch
Auto-merging style.css
Merge made by the 'recursive' strategy.
style.css | 24 +++++++++++++++++++++++-
1 file changed, 23 insertions(+), 1 deletion(-)
## 使用-sb来查看,被修改同一行的代码的文件是谁
[root@db01 code]# git status -sb
## master
## 使用git show可以查看当前所有的信息
[root@db01 code]# git show
commit 74b9ac3cfbb76deef50095ec3cf675d174ad600e
Merge: 112f9a1 e29a219
Author: 刘建源 <1060243063@qq.com>
Date: Wed Aug 23 16:22:14 2023 +0800
Merge branch 'mishu_branch'
那么如果冲突了该如何解决呢,那一定是开发讨论一下,删谁的....
然后修改内容,改完后,重新add然后提交
vim index.html
git add .
git commit -m '解决合并冲突'
分支创建规则
1.按照功能划分
2.按照环境划分
3.按照开发人员划分
4.按照环境和功能划分