git基本操作
版本控制
版本庫
????????????? 版本控制是一種記錄一個或若干文件內(nèi)容變化,以便將來查閱特定版本修訂情況的系統(tǒng)。
????????????? 簡單來說,就是為目錄打快照。將來可以回到某一個歷史記錄點(diǎn)。
????????????? 是一個典型的客戶端/服務(wù)器模型(C/S模型)
????????????? 版本庫是版本控制的核心
git
????????????? 是一個分布式的代碼管理工具
????????????? 可以是C/S架構(gòu),也就是Client/Server
????????????? 只要有適當(dāng)?shù)臋?quán)限,每個客戶端都可以下載或上傳數(shù)據(jù)到服務(wù)器
git的工作原理
????????????? git重要的三個工作區(qū)域:
–??????????? 工作區(qū):寫代碼的目錄。就是項目代碼存放的目錄。
–??????????? 暫存區(qū):工作區(qū)與版本庫之間的緩沖地帶。位置是.git/index
–??????????? 版本庫:工作區(qū)快照存放的目錄。在工作區(qū)下,名為.git的目錄
?????????????? 基本的 Git 工作流程如下:
1.????????? 在工作區(qū)中修改文件。
2.????????? 將想要提交的更改暫存,這樣會將更改添加到暫存區(qū)。
3.????????? 提交更新,找到暫存區(qū)的文件,將快照永久性存儲到 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
客戶端
# 設(shè)置使用者的名字和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創(chuàng)建名為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
# 查看文件狀態(tài)
[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 .?? # 把當(dāng)前目錄所有內(nèi)容放到暫存區(qū)
[root@develop myweb]# git status
[root@develop myweb]# git commit -m "項目初始化"?? # 將暫存區(qū)數(shù)據(jù)寫入版本庫
# 查看版本庫(快照),顯示詳細(xì)信息
[root@develop myweb]# git log
commit 70c927dae93dc347a40ddc24d5be7d6a8f9924eb (HEAD -> master)
# 查看版本庫(快照),每個快照顯示為一行
[root@develop myweb]# git log --pretty=oneline
# 查看版本庫(快照),顯示更為簡單的內(nèi)容
[root@develop myweb]# git log --oneline
70c927d (HEAD -> master) 增加2.txt
24c555d 增加1.txt
0629cc7 項目初始化
# 還原到版本:24c555d
# --hard丟棄工作區(qū)和暫存區(qū)文件的改動
[root@develop myweb]# git reset --hard 24c555d# 顯示HEAD指針移動歷史。HEAD@{0}是當(dāng)前指針位置,HEAD@{1}是上一次指針位置
[root@develop myweb]# git reflog
# 顯示HEAD指針移動歷史。
[root@develop myweb]# git reflog
# 查看分支
[root@develop myweb]# git branch?
# 創(chuàng)建名為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"
# 如果不同分支存在沖突的文件(文件名相同,內(nèi)容不同),需要手工解決沖突
# 1. 創(chuàng)建b2分支,新建hello.txt文件
# 2. 回到master分支,新建hello.txt文件,內(nèi)容與b2分支的hello.txt不同
# 3. 合并b2到master將會失敗,因?yàn)閮蓚€分支中的hello.txt內(nèi)容不同
# 4. 手工修改hello.txt,然后提交
# 查看所有的tag
tag標(biāo)記
????????????? 可以將某一次提交打標(biāo)記,以示本提交重要。
????????????? 通常用于將某次提交標(biāo)記為一個軟件發(fā)行版本。
[root@develop myweb]# git tag
# 為現(xiàn)在的版本打標(biāo)記為1.0
[root@develop myweb]# git tag 1.0
# 切換到指定標(biāo)記1.0
[root@develop myweb]# git checkout 1.0