wordpress 提示插件安装插件,seo怎么做新手入门,网站建设方案撰写,上海建设网站哪家好本站以分享各种运维经验和运维所需要的技能为主 《python零基础入门》#xff1a;python零基础入门学习 《python运维脚本》#xff1a; python运维脚本实践 《shell》#xff1a;shell学习 《terraform》持续更新中#xff1a;terraform_Aws学习零基础入门到最佳实战 《k8… 本站以分享各种运维经验和运维所需要的技能为主 《python零基础入门》python零基础入门学习 《python运维脚本》 python运维脚本实践 《shell》shell学习 《terraform》持续更新中terraform_Aws学习零基础入门到最佳实战 《k8》从问题中去学习k8s 《docker学习》暂未更新 《ceph学习》ceph日常问题解决分享 《日志收集》ELK各种中间件 《运维日常》运维日常 《linux》运维面试100问 《DBA》db的介绍使用mysql、redis、mongodb... Git安装及基础命令使用
一、版本控制系统
1.什么是版本控制系统
记录一个或多个变化的过程以便随时会到某个时间点
#功能
1.记录文件的历史变化
2.可以随时回到任何一个时间点
3.多人协作开发
2.为什么要用版本控制系统
版本控制是指在软件开发过程中对各种程序代码、配置文件及说明文档等文件变更的管理版本控制系统能够随着时间的推进记录一系列文件的变化方便以后随时回退到某个版本
3.版本并发控制类型
1本地版本控制系统
平时开发不使用版本控制系统的情况下我们习惯用复制整个项目目录的方式来保存不同的版本或许还会改名加上备份时间以示区别。这种方式需要对项目频繁进行复制最终整个工作区会比较臃肿混乱且时间一长很难区分项目之间的差异。为了解决这个问题人们开发了本地版本控制系统大多都是采用某种简单的数据库来记录文件的历次更新差异。最流行的是RCS它的工作原理是在硬盘上保存补丁集补丁指文件修订前后的变化通过应用所有的补丁可以重新计算出各个版本的文件内容。本地版本控制系统一定程度上解决了手动复制粘贴代码的问题但无法解决多人协作的问题。 2集中式版本控制系统
集中式版本控制系统的出现是为了解决不同系统上的开发者协同开发即多人协作的问题主要有 CVS 和 SVN。集中式版本控制系统有一个单一的集中管理的中央服务器保存所有文件的修订版本由管理员管理和控制开发人员的权限而协同工作的人们通过客户端连到中央服务器从服务器上拉取最新的代码在本地开发开发完成再提交到中央服务器。 #集中式版本控制系统有许多优点
1.操作比较简单只需要拉取代码开发提交代码。
2.基本解决多人协作问题每个人都可以从服务器拉取最新代码了解伙伴的进度。
3.同时管理员可以轻松控制各开发者的权限。
3.只需要维护中央服务器上的数据库即可。#缺点也很明显
1.本地没有全套代码没有版本信息提交更新都需联网跟服务器进行交互对网络要求较高。
2.集中式的通病风险较大服务器一旦宕机所有人无法工作服务器磁盘一旦损坏如果没有备份将丢失所有数据。
3分布式版本控制系统
分布式版本控制系统很好地解决了集中式版本控制系统的缺点。首先在分布式版本控制系统中系统保存的不是文件变化的差量而是文件的快照即把文件的整体复制下来保存其次最重要的是分布式版本控制系统是去中心化的当你从中央服务器拉取下来代码时拉取的是一个完整的版本库不仅仅是一份生硬的代码还有历史记录提交记录等版本信息这样即使某一台机器宕机也能找到文件的完整备份。Git 是 Linux 发明者 Linus 开发的一款分布式版本控制系统是目前最为流行和软件开发者必须掌握的工具。 二、安装git
1.环境准备
主机IP配置git10.0.0.803G内存
2.基本优化
#关闭selinux和防火墙
#时间同步
[rootgit ~]# ntpdate time1.aliyun.com
3.安装git
[rootgit ~]# yum install -y git[rootgit ~]# git config
--global use global config file #使用全局的配置文件
--system use system config file #使用系统的配置文件
--local use repository config file #使用版本库的配置文件
4.创建git的用户
#配置用户
[rootgit ~]# git config --global user.name lhd
#配置用户邮箱
[rootgit ~]# git config --global user.email 1240206455qq.com
#显示语法高亮
[rootgit ~]# git config --global color.ui true#查看全局配置
[rootgit ~]# git config --list
user.namelhd
user.email1240206455qq.com
color.uitrue
#生成了一个文件
[rootgit ~]# cat .gitconfig
[user]name lhdemail 1240206455qq.com
[color]ui true
5.初始化git
#初始化需要工作目录
[rootgit ~]# mkdir git_data#初始化
[rootgit ~]# cd git_data/
[rootgit git_data]# git init .
Initialized empty Git repository in /root/git_data/.git/#初始化会生成多个文件
[rootgit git_data]# ll .git/
total 12
drwxr-xr-x 2 root root 6 Sep 17 16:13 branches #分支目录
-rw-r--r-- 1 root root 92 Sep 17 16:13 config #配置文件
-rw-r--r-- 1 root root 73 Sep 17 16:13 description #程序使用的文件
-rw-r--r-- 1 root root 23 Sep 17 16:13 HEAD #版本指针
drwxr-xr-x 2 root root 242 Sep 17 16:13 hooks #钩子文件
drwxr-xr-x 2 root root 21 Sep 17 16:13 info #排除文件
drwxr-xr-x 4 root root 30 Sep 17 16:13 objects #存放数据的子文件
drwxr-xr-x 4 root root 31 Sep 17 16:13 refs #数据指针
三、git介绍
1.git组成
1.工作区 (workspace)就是我们当前工作空间也就是我们当前能在本地文件夹下面看到的文件结构。初始化工作空间或者工作空间 clean 的时候文件内容和 index 暂存区是一致的随着修改工作区文件在没有 add 到暂存区时候工作区将和暂存区是不一致的。2.暂存区 (index)老版本概念也叫 Cache 区就是文件暂时存放的地方所有暂时存放在暂存区中的文件将随着一个 commit 一起提交到 local repository 此时 local repository 里面文件将完全被暂存区所取代。暂存区是 git 架构设计中非常重要和难理解的一部分。3.本地仓库 (local repository)git 是分布式版本控制系统和其他版本控制系统不同的是他可以完全去中心化工作你可以不用和中央服务器 (remote server) 进行通信在本地即可进行全部离线操作包括 loghistorycommitdiff 等等。完成离线操作最核心是因为 git 有一个几乎和远程一样的本地仓库所有本地离线操作都可以在本地完成等需要的时候再和远程服务进行交互。4.远程仓库 (remote repository)中心化仓库所有人共享本地仓库会需要和远程仓库进行交互也就能将其他所有人内容更新到本地仓库把自己内容上传分享给其他人。结构大体和本地仓库一样。 2.git的四种状态
#文件在不同的操作下可能处于不同的 git 生命周期1.Untracked #未跟踪1新建的文件还没有被git管理过2将文件从git跟踪管理中删除那么readme处于unstacked状态2.Staged #已暂存1文件已经使用git add提交到暂存区2然后在对modifed状态的文件执行git add命令那么readme文件又变成staged状态3.Unmodified #未修改1将处于staged状态的文件git commit到仓库那么文件处于unmodified状态4.Modified #已修改1如果当前文件正处于unmodified状态然后修改工作区的文件那么文件变为modifed状态 四、git基础命令
1.查看状态
[rootgit git_data]# git status
# On branch master # 暂存区数据
#
# Initial commit # 未跟踪
#
nothing to commit (create/ files and use git add to track)
2.文件操作
1新建文件
[rootgit git_data]# touch {1,2,3}
[rootgit git_data]# ll
total 0
-rw-r--r-- 1 root root 0 Sep 17 16:38 1
-rw-r--r-- 1 root root 0 Sep 17 16:38 2
-rw-r--r-- 1 root root 0 Sep 17 16:38 3
2提交文件
#提交文件到暂存区
[rootgit git_data]# git add 1
[rootgit git_data]# git status#提交所有工作区域的文件
[rootgit git_data]# git add .
[rootgit git_data]# git status#提交暂存区文件到本地仓库
git commit -m 提交注释
3删除文件
1将暂存区的文件移除
[rootgit git_data]# git rm --cache 1
rm 1
[rootgit git_data]# git status
2删除工作目录的文件
[rootgit git_data]# rm -rf 1
[rootgit git_data]# git status
3同时删除
#同时删除暂存区和工作区的文件
[rootgit git_data]# git rm -f 2
rm 2
[rootgit git_data]# git status
4提交到仓库
#将暂存区的文件提交到仓库
[rootgit git_data]# git commit -m add new file 3
[master (root-commit) a4566ae] add new file 31 file changed, 0 insertions(), 0 deletions(-)create mode 100644 3-m #注释#查看状态没有可提交的内容
[rootgit git_data]# git status
# On branch master
nothing to commit, working directory clean
5修改文件
1重命名
#方式一
1.本地重命名
[rootgit git_data]# mv 3 3.txt
[rootgit git_data]# git status2.从暂存区删除文件
[rootgit git_data]# git rm --cached 3
rm 33.再次提交文件
[rootgit git_data]# git add 3.txt
[rootgit git_data]# git status4.提交到本地仓库
[rootgit git_data]# git commit -m rename 3.txt
2同时修改
1.同时修改暂存区和工作目录的文件名字
[rootgit git_data]# git mv 3.txt 3
[rootgit git_data]# git status2.提交本地仓库
[rootgit git_data]# git commit -m rename 3 too
6对比文件
git status 只能查看区域的状态的不同不能查看内容是否相同git diff #可以查看文件的不同# 对比工作目录和暂存区的文件
[rootgit git_data]# git diff 3
diff --git a/3 b/3
index 573541a..58c9bdf 100644
--- a/3b/3-1 1
-0
111# 对比本地仓库和暂存区的数据
[rootgit git_data]# git diff --cached 3
diff --git a/3 b/3
index 573541a..58c9bdf 100644
--- a/3b/3-1 1
-0
111
3.提交历史
当我们执行git commit后发现代码错了需要回滚
git任何操作都相当于做快照我们可以恢复到任意时刻
1查看历史
[rootgit git_data]# git log
commit 43f49f38976593194516ab68228faaa09b746270
Author: lhd 1240206455qq.com
Date: Thu Sep 17 17:09:21 2020 0800modified 3commit 90f573fa6524704cc3457cd3e3a1ccb24e5230ef
Author: lhd 1240206455qq.com
Date: Thu Sep 17 16:58:06 2020 0800rename 3 too
2查看简单的历史提交
[rootgit git_data]# git log --oneline
43f49f3 modified 3
90f573f rename 3 too
5d61056 rename 3.txt
a4566ae add new file 3
3查看当前分支
[rootgit git_data]# git log --oneline --decorate
43f49f3 (HEAD, master) modified 3
90f573f rename 3 too
5d61056 rename 3.txt
a4566ae add new file 3
4查看提交的详细信息
[rootgit git_data]# git log -p
5显示最近提交的数据
[rootgit git_data]# git log --oneline -2 # 只显示两行
43f49f3 modified 3
90f573f rename 3 too
6恢复了历史数据
1暂存区数据取出至工作区
#从暂存区将数据取出
[rootgit git_data]# git checkout -- 3
2修改了工作区并且提交到了暂存区
# 回到上一次提交的节点也就是本地仓库退回暂存区
[rootgit git_data]# git reset HEAD 3
Unstaged changes after reset:
M 3#从暂存区将数据取出将暂存区数据取出至工作区
[rootgit git_data]# git checkout -- 3
[rootgit git_data]# git diff 3
3修改了工作区并且提交到了暂存区在提交到了本地仓库
1.修改文件并一路提交到本地仓库
[rootgit git_data]# echo 333 3
[rootgit git_data]# git add 3
[rootgit git_data]# git commit -m 错误的提交
[master 3044a5a] 错误的提交1 file changed, 1 insertion(), 1 deletion(-)2.发现错误想要回滚
#查看提交历史
[rootgit git_data]# git log --oneline
3044a5a 错误的提交
43f49f3 modified 3
90f573f rename 3 too
5d61056 rename 3.txt
a4566ae add new file 3
3.使用指针回到上一次提交的时间点
[rootgit git_data]# git reset --hard 43f49f3
HEAD is now at 43f49f3 modified 3
[rootgit git_data]# git log --oneline --decorate
43f49f3 (HEAD, master) modified 3
90f573f rename 3 too
5d61056 rename 3.txt
a4566ae add new file 3
4.发现回滚错了又看不到新提交的时间点
#查看所有的经历时间节点
[rootgit git_data]# git reflog
43f49f3 HEAD{0}: reset: moving to 43f49f3
3044a5a HEAD{1}: commit: 错误的提交
43f49f3 HEAD{2}: commit: modified 3
90f573f HEAD{3}: commit: rename 3 too
5d61056 HEAD{4}: commit: rename 3.txt
a4566ae HEAD{5}: commit (initial): add new file 3
5.回到回滚之前的时间点
[rootgit git_data]# git reset --hard 3044a5a
HEAD is now at 3044a5a 错误的提交
[rootgit git_data]# cat 3
333