git

集中式版本控制工具:cvs、svn(subversion)

分布式版本控制工具:git

Git基本操作

部署Git服务器

默认git使用ssh服务提供的共享

YUM安装Git软件

yum -y install git

初始化一个空仓库

[root@git ~]# mkdir -p /var/lib/git
[root@git ~]# git init /var/lib/git/project --bare    #创建空仓库
[root@git ~]# ls /var/lib/git/project    #查看仓库中是否有内容

设置防火墙信任所有,设置SELinux放行所有

firewall-cmd --set-default-zone=trusted
setenforce 0
sed -i '/^SELINUX/s/enforcing/disabled/' /etc/selinux/config

客户端测试

设置防火墙信任所有,设置SELinux放行所有

firewall-cmd --set-default-zone=trusted
setenforce 0
sed -i '/^SELINUX/s/enforcing/disabled/' /etc/selinux/config
常用命令
git init /var/lib/git/project --bare	#创建空仓库
git clone root@192.168.4.20:/var/lib/git/project
git remote -v   #查看服务器信息
git status		#查看本地仓库中数据的状态
git add .		#将工作区的修改提交到暂存区
git commit  -m  "注释,这里可以为任意字符"		#将暂存区修改提交到本地仓库
git remote add origin root@192.168.1.100:/var/lib/git/web #添加远程服务器,给远程服务器的web仓库取一个本地名称为origin
git config --global push.default simple    #根据git版本不同,这个步骤可能需要或不需要
git push		#将本地数据推送给git服务器
git push origin              #将数据推送至origin服务器
git push -u origin master		#指定提交到origin服务器,提交的是master分支
git pull		#将服务器上的数据更新到本地
git pull -u origin master
git log			#查看版本日志
git log --pretty=oneline
git log --oneline
git reflog

修改git配置

git config --global user.email "you@example.com"
git config --global user.name "Your Name"
cat ~/.gitconfig

HEAD指针操作

HEAD指针是一个可以在任何分支和版本移动的指针,通过移动指针我们可以将数据还原至任何版本。每做一次提交操作都会导致git更新一个版本,HEAD指针也跟着自动移动。

还原到以前提交版本

$ git reflog
cfc9329 (HEAD -> master) HEAD@{0}: reset: moving to cfc9329
860e5c3 (origin/master, origin/HEAD) HEAD@{1}: commit: new
cfc9329 (HEAD -> master) HEAD@{2}: clone: from 192.168.1.100:/root/git/project

$ git reset --hard cfc9329							//还原至原来提交版本
HEAD is now at cfc9329 123

可以任意移动指针到任意版本,但是最后一定要回到最新版本

恢复数据步骤

误删 --》 回到上个版本 --》 手动复制误删的数据 --》回到最新版本 --》 添加误删的数据 --》上传

Git分支

常见的分支规范如下:

MASTER分支(MASTER是主分支,是代码的核心)。

DEVELOP分支(DEVELOP最新开发成果的分支)。

RELEASE分支(为发布新产品设置的分支)。

HOTFIX分支(为了修复软件BUG缺陷的分支)。

FEATURE分支(为开发新功能设置的分支)。

常用命令

git branch -v						//查看分支
git branch hotfix					//创建分支
git branch -d hotfix				//删除分支
git checkout hotfix					//切换分支

解决版本分支的冲突问题

[root@develop project]# git checkout hotfix
[root@develop project]# echo "AAA" > a.txt
[root@develop project]# git add .
[root@develop project]# git commit -m "add a.txt by hotfix"
[root@develop project]# git checkout master		
[root@develop project]# echo "BBB" > a.txt
[root@develop project]# git add .
[root@develop project]# git commit -m "add a.txt by master"
[root@develop project]# git merge hotfix		//把hotfix分支内容合并到master分支(先切换到master分支)
自动合并 a.txt
冲突(添加/添加):合并冲突于 a.txt(Merge conflict in a.txt)
自动合并失败(merge failed),修正冲突(fix conflicts)然后提交修正的结果。

遇到冲突必须手动修改

$ git checkout master
vim a.txt 								#修改该文件,为最终需要的数据,解决冲突
$ git add .
$ git commit -m "resolved"

在客户端现有的文件夹下克隆仓库

[root@develop ~]# mkdir mygit
[root@develop ~]# cd mygit
[root@develop mygit]# git init                  #将当前目录创建为git空仓库
[root@develop mygit]# git remote -v            #此时该仓库没有对应的远程服务器
[root@develop mygit]# git remote add origin 192.168.4.20:/var/lib/git/web
#添加远程服务器,给远程服务器的web仓库取一个本地名称为origin
[root@develop mygit]# git remote -v           #查看远程服务器信息
[root@develop mygit]# ls                       #本地还是空目录,没有任何资料
[root@develop mygit]# git pull  origin master   
#从origin服务器的master分支拉取数据
[root@develop mygit]# ls
[root@develop mygit]# echo new > new.txt
[root@develop mygit]# git add .
[root@develop mygit]# git commit -m "newfile"
[root@develop mygit]# git push -u origin master
上一篇:UWP开发入门(十一)——Attached Property的简单应用


下一篇:git分支管理