git init 带工作区
git --bare init 是不带工作区的裸仓库,只有版本库,
想要看git里面的内容只能通过git clone address的方式克隆出来
一、git的发展和常见的版本控制工具
1、git发展
git开发管理员是linux的创始人林纳斯托瓦兹
2002年linux内核托管到git上进行版本控制
git是一个开源的分布式版本控制工具
git可以高效的管理从小到大的开发源代码或者程序
2、通过git延伸的版本控制工具
Github
Gitlib
3、git的特点
克隆数据库版本:从git服务器克隆数据库,包含代码的版本信息
提交代码:在客户端本机创建的分支提交到git服务器中
合并分支:可以在本地主机进行合并,将git服务器代码合并到一台git中
拉取合并分支:建一个新的分支,把git服务器中新版本的代码下载下来,然后在自己的主分支进行合并
代码冲突解决:在分支更新源代码时解决冲突,解决完成后,发布新的补丁程序进行更新版本程序
二、版本控制的方法
1、本地版本控制
项目保存在管理员本地主机上,修改项目的名字或者时间进行标识版本信息
本地版本控制容易被管理员误操作覆盖数据,无法表示项目最新版本
2、集中化版本控制
管理员在网络中搭建一台独立的SVN服务器
所有开发人员将源代码提交到svn,svn对提交的项目大表示区分不同的版本
方便用户访问svn服务器查找最新版的软件
3、采用分布式版本控制器
客户端不只是提取最新版本的程序
将服务器数据从分布式版本控制系统克隆到本地
分布式版本控制系统故障,服务器可以提供版本控制服务
git支持版本控制和数据备份功能
三、安装git和初始化git
1、安装git
[root@jenkins /]# yum -y install git
2、设置用户和邮箱
[root@jenkins /]# git config --global user.name "bob"
3、配置邮箱
[root@jenkins /]# git config --global user.email "bob@benet.com"
[root@jenkins /]# git config --global color.ui true
4、查看全局配置和配置文件
[root@jenkins /]# git config --list
user.name=bob
user.email=bob@benet.com
color.ui=true
[root@jenkins ~]# cat .gitconfig
[user]
name = bob
email = bob@benet.com
[color]
ui = true
四、初始化git仓库
1、创建git仓库根目录
[root@jenkins ~]# mkdir java-daem
2、添加管理git仓库的用户
[root@jenkins ~]# useradd git
[root@jenkins ~]# echo "pwd@123" | passwd --stdin git
3、修改git仓库的所有者
[root@jenkins ~]# chown -R git:git java-daem/
4、初始化仓库
[root@jenkins ~]# cd java-daem/
[root@jenkins java-daem]# git --bare init
五、配置git客户端
1、配置免交互式ssh
[root@slave01 ~]# ssh-keygen -t rsa
[root@slave01 ~]# ssh-copy-id -i root@192.168.200.90
2、git客户端克隆git仓库
[root@slave01 ~]# git clone root@192.168.200.80:/root/java-daem
3、关联远程仓库
[root@slave01 ~]#
4、在客户端添加git用户
[root@slave01 java-daem]# git config --global user.email "bob@benet.com"
[root@slave01 java-daem]# git config --global user.name "bob"
5、客户端测试仓库是否能正常使用
[root@slave01 java-daem]# touch 1.txt
[root@slave01 java-daem]# git add .
[root@slave01 java-daem]# git commit -m "1.txt"
[root@slave01 java-daem]# git push oragin master
六、git的命令
1、git常见的选项
add 添加文件进入暂存区
branch 添加git分支
checkout 切换git分支
clone 克隆git仓库到新的目录
commit 提交数据到git仓库
diff 比较新版本和旧版本的数据
init 初始化空的仓库
log 显示提交的日志
merge 合并git分支
mv 获取git仓库数据生成一个新的git分支
pull 获取git仓库数据生成一个新的git分支
push 更新到远程仓库信息
reset 回滚到老版本数据
rm 从工作区删除数据
show 显示创建的对象
status 显示工作的状态
tag 创建,列出、删除版本标识信息
2)git暂存区
git add . 将文件从工作区提交到暂存区
git rm --cached a 从暂存区移除文件a
git rm -f a 彻底移除文件a
3)从暂存区 提交到本地仓库
git commit -m "**" -m:说明
git status 查看暂存区是否存在
4)git客户端的使用
git clone root@192.168.100.10:/root/java-daem/.git 客户端访问git服务器
git pull 更新本地工作台的数据
七、git数据库的修改
1、使用mv修改数据
mv a a.txt 修改数据
git rm --cached a 删除数据
git add a.txt 追踪数据
git commit -m "**" 提交数据
2、使用git mv 修改数据
git mv a a.txt 在暂存区修改文件名
git commit -m "a.txt" 提交到本地仓库
3、比较暂存区的区别
diff a b 比较文件区别
git add a 在工作台中比较
git add b
git diff --cached
git commit -m "**" 提交数据
八、git日志管理和回滚
1、查看所有的日志
git log
2、日志缩进到一行显示
git log --oneline
3、显示最后一次修改的指针信息
git log --oneline --decorate
4、显示最新的日志
git log -1
5、查看最新日志记录(改动信息)
git log -1 -q
6、回滚数据
git reset --hard (版本号)
九、配置git分支管理
1、配置git分支的作用
方便多个开发人员开发一个项目
项目开发完成后将分支进行合并
2、分支
git branch benet 创建benet分支
git branch 查看分支
git checkout benet 切换分支
git merge master 合并在benet分支中
git checkout -b benet 创建并切换分支
git checkout master 合并在master分支中
git merge benet
git branch -d accp 删除分支
3、分支合并问题解决
[root@slave01 java]# git merge master
自动合并 2.txt
冲突(添加/添加):合并冲突于 2.txt
自动合并失败,修正冲突然后提交修正的结果。
#根据提示将2.txt中的注释或者有符号的行删除,然后再重新跟踪和提交
十、git标签
1、git标签的作用
区分稳定版本和开发版本
一般针对稳定版本项目打标签
当基于稳定版项目继续开发更新,项目将变成测试版
测试过程中出现异常可以通过git标签进项回滚
2、获取项目的标识信息
git log --oneline
3、打标签,标签是v1.0
git tag -a v1.0 6c19267 -m "**" 打标签
git tag -d v1.0 删除标签
4、查看标识的详细信息
git tag
5、通过标签进行查看
git show v1.0
6、通过标签回滚到老版本项目
git reset --hard v1.0