OPERATION GIT

版本管理工具:
svn 集中式 用户使用该服务时,需要时刻与服务器保持在线状态,数据统一保存在svn服务器中
git 分布式 用户使用该服务时,不需要时刻与服务器保持在线状态,仅仅传递数据时需要联网,数据保存在git服务器与git客户端,网站:https://gitee.com/,https://github.com/

git工作流程:
在这里插入图片描述
我们假设web1为远程服务器,web2为本地服务器。

	1.安装git
	[root@web1 ~]# yum -y install git
	[root@web2 ~]# yum -y install git
	
	2.在远程上建立仓库
	[root@web1 ~]# mkdir /var/lib/git
	[root@web1 ~]# git init /var/lib/git/project --bare  //创建空仓库,叫Project
	
	3.在本地上连接远程,并创建数据,测试提交远程服务器是否成功
	[root@web2 ~]#git clone 192.168.2.100:/var/lib/git/project  //在客户机克隆服务器的仓库
	[root@web2 ~]#cd  project  //进入本地克隆仓库
	[root@web2 project]# echo "web2_01" > web2_01.txt   //创建测试文件   
	[root@web2 project]# git add .   //提交到本地暂存区
	[root@web2 project]# git commit -m "web2_01.txt"  //将文件保存到本地克隆仓库中,-m后面的内容是日志提示信息,首次保存会失败,按照下面2条命令输入邮箱和用户名即可
	  git config --global user.email "you@example.com"
	  git config --global user.name "Your Name"
	[root@web2 project]# git commit -m "web2_01.txt"  再次提交文件,保存到本地克隆仓库中
	[root@web2 project]#git push 将本地克隆仓库中的数据推送到远程服务器,第一次使用时必须配置使用习惯,可能是因为版本更新导致的。
	[root@web2 project]# git config --global push.default simple  配置使用习惯
	[root@web2 project]#git push 再次推送

所有通过commit提交的记录都可以通过日志查看
	git log   //查看完整日志
	git log --pretty=oneline  //查看精简日志
	git log --oneline  //查看最精简日志
	git reflog  //查看本机操作记录

head指针(类似于还原到出厂设置)
如果需要还原到之前的版本(时间节点),可以利用head指针对应日志记录中的随机字符串指向需要的版本

	root@web2 project]# git log --oneline  //查看日志,开头的部分就是不同版本的随机字符串
	[root@web2 project]# git  reset  xxxx  --hard  //回到过去的某个记录,其中 xxxx是日志中显示的时间节点信息,要根据实际修改
	[root@web2 project]# git reflog  //查看回复记录之后的日志记录,head@{0}代表当前所在版本位置

git分支
当项目内容比较多时,可以在git中使用分支,不同分支的文件可以互不干扰而不用创建多个仓库

	[root@web2 project]# git branch  //查看当前分支,*是所在位置
	[root@web2 project]# git branch hotfix  //创建hotfix分支
	[root@web2 project]# git checkout hotfix  //切换到hotfix分支
	[root@web2 project]# echo "hotfix_01" > hotfix_01.txt    //编写测试文件
	[root@web2 project]# git add .    //提交到暂存区
	[root@web2 project]# git commit -m "hotfix_01.txt"    //提交到仓库保持
	
	[root@web2 project]# git checkout master   //切换到master分支
	[root@web2 project]# echo "master_01" > master_01.txt    //编写测试文件
	[root@web2 project]# git add .    //提交到暂存区
	[root@web2 project]# git commit -m "hotfix_01.txt"   //提交到仓库保持

	git merge hotfix    //把hotfix分支的文件合并到当前分支
	如果分别在不同分支,创建同名文件,内容不同,再进行合并时,会发生冲突,此时需要手工修改冲突文件,修改完之后,就可以解决冲突

配置ssh秘钥,实现无密码访问git服务器

					本地仓库
		ssh-keygen -f /root/.ssh/id_rsa  -N  ''  //在客户端创建秘钥秘钥没有密码,-f 新建文件夹  -N  一对单引号:passphrash为空相当于一路空格
		ssh-copy-id 192.168.2.100   //传入服务器
		git clone 192.168.2.100:/var/lib/git/abc  //克隆git服务器的仓库,已经无需密码
		cd abc   //进入仓库
		echo abc > abc.txt     //创建测试文件 
		git add .  //提交到暂存区
		git commit -m "abc"   //提交到仓库保存
		git push   //推送到git服务器,也不需要密码了

不用ssh协议进行git的仓库管理,使用git协议:

		Web1主机:
		yum -y install git-daemon  //安装git协议软件包
		systemctl start git.socket  //开启服务
		setenforce 0
		vim /usr/lib/systemd/system/git@.service
		  	修改git服务的配置,在第7行末尾加--enable=receive-pack选项,允许对仓库服务器写入数据,否则是只读
		[root@web1 ~]# systemctl  restart  git.socket  //开启服务
		[root@web1 ~]# setenforce  0  //关闭selinux,(防火墙也关)
		[root@web1 ~]#chmod  -R  777  /var/lib/git/abc  //开放仓库权限

		[root@web2 ~]#rm -rf project   //删除原有仓库
		[root@web2 ~]#git  clone  git://192.168.2.100/abc  //使用git协议从新克隆
		[root@web2 ~]#cd abc  //进入仓库,可以正常使用仓库
		[root@web2 abc]# echo 123 > abc  //创建测试文件
		[root@web2 abc]# git add .   //提交到暂存区
		[root@web2 abc]# git commit -m "abc"  //提交到仓库
		[root@web2 project]# git push  //推送到远程服务器

在这里插入图片描述

使用http访问git(只读)

		[root@web1 ~]# yum -y install httpd gitweb  安装软件包
		[root@web1 ~]# vim +10 /etc/gitweb.conf  进入配置文件的第10行删除注释即可,其中/var/lib/git路径必须是仓库的上级目录,如果不一致要修改
		[root@web1 ~]# systemctl  restart  httpd  启动网站服务
		关闭selinux与防火墙
		使用火狐访问http://192.168.2.100/git/   
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值