git基本操作
版本控制
版本库
• 版本控制是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统。
• 简单来说,就是为目录打快照。将来可以回到某一个历史记录点。
• 是一个典型的客户端/服务器模型(C/S模型)
• 版本库是版本控制的核心
git
• 是一个分布式的代码管理工具
• 可以是C/S架构,也就是Client/Server
• 只要有适当的权限,每个客户端都可以下载或上传数据到服务器
git的工作原理
• git重要的三个工作区域:
– 工作区:写代码的目录。就是项目代码存放的目录。
– 暂存区:工作区与版本库之间的缓冲地带。位置是.git/index
– 版本库:工作区快照存放的目录。在工作区下,名为.git的目录
• 基本的 Git 工作流程如下:
1. 在工作区中修改文件。
2. 将想要提交的更改暂存,这样会将更改添加到暂存区。
3. 提交更新,找到暂存区的文件,将快照永久性存储到 Git 目录。
hostnamectl set-hostname git
nmcli connection modify eth0 ipv4.addresses 192.168.4.20/24
nmcli connection modify eth0 ipv4.method manual
nmcli connection down eth0
nmcli connection up eth0
echo a | passwd --stdin root
sed -i '/^SELINUX=/s/enforcing/disabled/' /etc/selinux/config
setenforce 0
systemctl stop firewalld.service
systemctl disable firewalld.service
客户端
# 设置使用者的名字和email地址
[root@develop ~]# git config --global user.name zhangzhg
[root@develop ~]# git config --global user.email zhangzg@tedu.cn
# 查看git配置信息
[root@develop ~]# git config --list
user.name=zhangzhg
user.email=zhangzg@tedu.cn
[root@develop ~]# cat ~/.gitconfig
• 使用git
# 初始化git,方法一,通过git创建名为mytest的目录:
[root@develop ~]# git init mytest
初始化git,方法二,对已存在的目录操作:
[root@develop ~]# mkdir myweb; cd myweb
[root@develop myweb]# echo 'Hello World' > readme
[root@develop myweb]# git init
# 查看文件状态
[root@develop myweb]# git status
# 安装中文支持
[root@develop myweb]# yum list | grep zh
[root@develop myweb]# yum install -y langpacks-zh_CN.noarch
# 如果仍然是英文,可以通过以下方式修改:
[root@develop myweb]# localectl set-locale zh_CN.utf8
[root@develop myweb]# reboot
暂存目录下所有文件
[root@develop myweb]# git add . # 把当前目录所有内容放到暂存区
[root@develop myweb]# git status
[root@develop myweb]# git commit -m "项目初始化" # 将暂存区数据写入版本库
# 查看版本库(快照),显示详细信息
[root@develop myweb]# git log
commit 70c927dae93dc347a40ddc24d5be7d6a8f9924eb (HEAD -> master)
# 查看版本库(快照),每个快照显示为一行
[root@develop myweb]# git log --pretty=oneline
# 查看版本库(快照),显示更为简单的内容
[root@develop myweb]# git log --oneline
70c927d (HEAD -> master) 增加2.txt
24c555d 增加1.txt
0629cc7 项目初始化
# 还原到版本:24c555d
# --hard丢弃工作区和暂存区文件的改动
[root@develop myweb]# git reset --hard 24c555d# 显示HEAD指针移动历史。HEAD@{0}是当前指针位置,HEAD@{1}是上一次指针位置
[root@develop myweb]# git reflog
# 显示HEAD指针移动历史。
[root@develop myweb]# git reflog
# 查看分支
[root@develop myweb]# git branch
# 创建名为b1的分支
[root@develop myweb]# git branch b1
# 切换分支
[root@develop myweb]# git checkout b1
# 合并b1分支到master
[root@develop myweb]# git checkout master
[root@develop myweb]# git merge b1 -m "合并b1到master"
# 如果不同分支存在冲突的文件(文件名相同,内容不同),需要手工解决冲突
# 1. 创建b2分支,新建hello.txt文件
# 2. 回到master分支,新建hello.txt文件,内容与b2分支的hello.txt不同
# 3. 合并b2到master将会失败,因为两个分支中的hello.txt内容不同
# 4. 手工修改hello.txt,然后提交
# 查看所有的tag
tag标记
• 可以将某一次提交打标记,以示本提交重要。
• 通常用于将某次提交标记为一个软件发行版本。
[root@develop myweb]# git tag
# 为现在的版本打标记为1.0
[root@develop myweb]# git tag 1.0
# 切换到指定标记1.0
[root@develop myweb]# git checkout 1.0