proxy 10.10.11.10
client 10.10.11.11
web1 10.10.11.12
web2 10.10.11.13
proxy:
1. Git安装
]# yum -y install git
]# git config --global user.name "zk"
]# git config --global user.email "349012093@qq.com"
]# git --help
最常用的 git 命令有:
add 添加文件内容至索引
bisect 通过二分查找定位引入 bug 的变更
branch 列出、创建或删除分支
checkout 检出一个分支或路径到工作区
clone 克隆一个版本库到一个新目录
commit 记录变更到版本库
diff 显示提交之间、提交和工作区之间等的差异
fetch 从另外一个版本库下载对象和引用
grep 输出和模式匹配的行
init 创建一个空的 Git 版本库或重新初始化一个已存在的版本库
log 显示提交日志
merge 合并两个或更多开发历史
mv 移动或重命名一个文件、目录或符号链接
pull 获取并合并另外的版本库或一个本地分支
push 更新远程引用和相关的对象
rebase 本地提交转移至更新后的上游分支中
reset 重置当前HEAD到指定状态
rm 从工作区和索引中删除文件
show 显示各种类型的对象
status 显示工作区状态
tag 创建、列出、删除或校验一个GPG签名的 tag 对象
2. 创建版本库
]# mkdir mymenu
]# cd mymenu/
mymenu]# git init # 初始化仓库
初始化空的 Git 版本库于 /root/mymenu/.git/
初始化了一个空的仓库,目录下多了.git目录
系统自动创建了唯一一个master分支
版本控制系统只能跟踪文本文件的改动,且编码方式是utf-8
3. 文件的基本操作
mymenu]# echo 'Hello World!' > readme.txt
3.1 添加文件到仓库
mymenu]# git add readme.txt
3.2 提交文件到仓库
mymenu]# git commit -m "a new file"
[master(根提交) 17a73da] a new file
1 file changed, 1 insertion(+)
create mode 100644 readme.txt
如果提交的备注写错了,可以用以下命令修改刚刚提交的备注
mymenu]# git commit --amend (进入vim编辑模式)
[master bcd3382] A new file
1 file changed, 1 insertion(+)
create mode 100644 readme.txt
3.3 修改文件
mymenu]# echo '123' > readme.txt
提交文件到仓库
mymenu]# git add readme.txt
mymenu]# git commit -m "change to 123"
[master ae3d174] change to 123
1 file changed, 1 insertion(+), 1 deletion(-)
3.4 每次commit都会生成一个“快照”
查看历史记录
mymenu]# git log
commit ae3d174701f89d8b68ebd143818c81a9717d5963
Author: zk <349012093@qq.com>
Date: Thu Jan 9 07:08:19 2020 +0800
change to 123
commit bcd3382da570951e3ce8cb411adb127f7af8d1bd
Author: zk <349012093@qq.com>
Date: Thu Jan 9 07:02:24 2020 +0800
A new file
git的版本号是用SHA1计算出来的一个16进制数
如果嫌输出信息太多,可以加上--pretty=oneline
mymenu]# git log --pretty=oneline
ae3d174701f89d8b68ebd143818c81a9717d5963 change to 123
bcd3382da570951e3ce8cb411adb127f7af8d1bd A new file
3.5 回退历史版本
mymenu]# git reset
首先,Git必须知道当前版本是哪个版本,在Git中,用HEAD表示当前版本,也就是最新的提交bcd3382...,上一个版本就是HEAD^,上上一个版本就是HEAD^^,当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100。
回退上一版本
mymenu]# git reset --hard HEAD^
HEAD 现在位于 bcd3382 A new file
这时再次查看历史版本
mymenu]# git log
commit bcd3382da570951e3ce8cb411adb127f7af8d1bd
Author: zk <349012093@qq.com>
Date: Thu Jan 9 07:02:24 2020 +0800
A new file
之前那个版本已经看不到了,这时如果想回到之前那个版本,需要知道版本号,git内部有个指向当前版本的head指针,将指针从当前版本指回去,所以git回退版本特别快
mymenu]# git reset --hard bcd3382
HEAD 现在位于 bcd3382 A new file
[root@proxy mymenu]# git log
commit bcd3382da570951e3ce8cb411adb127f7af8d1bd
Author: zk <349012093@qq.com>
Date: Thu Jan 9 07:02:24 2020 +0800
A new file
3.6 查看历史命令
mymenu]# git reflog
bcd3382 HEAD@{0}: reset: moving to HEAD^
ae3d174 HEAD@{1}: commit: change to 123
bcd3382 HEAD@{2}: commit (amend): A new file
17a73da HEAD@{3}: commit (initial): a new file
3.7 查看状态
mymenu]# git status
# 位于分支 master
无文件要提交,干净的工作区
4. 工作区和暂存区
Git和SVN的一个不同之处就是有暂存区的概念
名词解释:
工作区(Working Directory):指的是在电脑里能看到的目录,比如mymenu文件夹就是一个工作区
版本库(Repository):.git目录,Git的版本库里存了很多东西,其中最重要的就是称为stage(或者叫index)的暂存区,还有Git为我们自动创建的第一个分支master,以及指向master的一个指针叫HEAD。
git add 是把需要提交的文件添加到暂存区
git commit 是把暂存区的所有内容提交到当前分支
来源:https://www.cnblogs.com/luwei0915/p/12169437.html