1. 版本控制
作用:
- 版本控制可以记录每次数据的变更
- 还能够帮助还原任何一次的历史变更
- 实现团队的协同工作
2. svn VS git
集中式版本控制–svn
分布式版本控制–git
3. git
3.1 git特点
- 强容灾性
- 速度快
- 设计简单
- 很好的分支管理
- 大型项目的版本控制大多基于git管理
3.3 git工作流程
- 从远程仓库中clone资源到本地仓库。
- 从本地仓库checkout代码进行修改
- 将修改后代码add到暂存区
- commit修改到本地仓库
- push本地仓库修改到远程仓库
4. Git操作
4.1 创建版本库
git init
4.2 添加文件
# 1.添加文件到暂存区 .(或者文件名)
git add .
# 2.提交文件到master分支
git commit -m '提交日志'
# 3. 查看本地仓库的状态
git status
4.3 修改文件
提交修改
# 1.添加文件到暂存区
git add .
# 2.提交文件
git commit -m '日志'
4.4 删除文件
删除之后,如果提交修改,那么版本库的文件就会删除
4.5 文件急救
查看提交日志
恢复master分支到上一个版本
至此,仓库中master分支的文件已经恢复,在工作去还原master分支
4.6 忽略文件
.ignore文件参考内容
.idea
*.iml
out
gen
target
*.class
*.log
5. 远程仓库
5.1 关联方式
5.1.1 SSH配置
-
右键打开git bash
-
生成密钥对
ssh-keygen -t rsa
-
在github配置公钥信息
5.1.2 HTTPS配置
不需要额外配置,在同步时候提供github的用户名和密码即可
5.2 同步远程仓库
5.2.1 SSH方式
将本地仓库和进行同步,以便将本地仓库的数据备份到远程仓库
5.2.1.1 命令行
# orgin是远程仓库的别名
git remote add origin 仓库的ssh地址
如果以前同步过会出现如下错误
删除以前同步记录即可,然后重新同步即可
git remote rm origin
推送本地仓库到远程仓库
# 将本地仓库master分支到远程仓库
git push -u origin master
5.2.2 HTTPS
5.2.2.1 命令行
# 添加远程仓库
git remote add origin 仓库的https地址
# 提交代码
git push -u origin master
5.3 克隆远程仓库
将远程仓库克隆到本地,克隆会在本地创建一个新的仓库
5.3.1 命令行方式
$ git clone git@github.com:sublun/mytest.git
5.3.2 图形界面方式
- 右键选择clone
- 输入克隆地址
克隆与同步
相同点:都可以与远程仓库建立连接
区别:
1. 同步适用于将本地仓库推送到远程空的仓库 2. 克隆适用于将远程仓库复制到本地新的仓库
5.4 拉取远程仓库代码
- fech:从远程仓库获取最新版本到工作区,不会自动merge(合并代码)
- pull:相当于是从远程获取最新版本并merge到本地工作区
fetch更加的安全,假如pull和fetch的结果一样,pull更加方便
git pull=git fetch+git merge
5.4.1 使用fetch和merge
# 查看远程仓库
git remote -v
# 获取远程仓库代码到本地仓库,并且创建一个新的分支temp
git fetch origin master:temp
# 比较temp与本地master分支的不同
git diff temp
# 合并temp分支到master
git merge temp
# 删除temp分支
git branch -d temp
5.5 解决冲突
5.5.1 冲突过程
- A和B两个人编辑同一个文件
- A提交修改到本地仓库,推送远程仓库
- B在未从远程仓库更新情况下,然后修改相同文件(已过期),并且提交本地修改,推送到远程仓库时冲突发生
5.5.2 解决方案
- 尽量避免不同人修改同一个文件
- 如果修改相同文件,应该先更新再修改
- 如果重复发生,相关人员在发生冲突方协商解决
- 冲突解决完成后,标记已解决,提交代码,双方都更新最新代码
- 冲突文件
- 标记已解决
5.6 私有git服务
5.6.1 搭建私有服务
-
安装git服务环境准备
yum -y install curl curl-devel zlib-devel openssl-devel perl cpio expat-devel gettext-devel gcc cc
-
下载git-2.5.0.tar.gz,并安装
1)tar -zvxf XXXX.tar.gz 2)cd git-2.5.0 3)autoconf 4)./configure 5)make 6)make install
-
添加用户
adduser -r -c 'git version control' -d /home/git -m git
-
设置密码
passwd git
-
切换到git用户
su git
-
创建git仓库
git --bare init /home/git/first
5.6.2 使用私有服务
操作方式基本和连接github一样,我们的git服务器并没有配置密钥登录,所以每次连接时需要输入密码
$ git remote add origin git@192.168.25.156:first
6. 分支管理
**HEAD:**指向当前正在使用分支的指针
**master:**创建仓库时,git默认就会创建一个master分支
- master指向当前最新的提交,HEAD指向master,master就是一条线
-
创建新分支dev
# dev:新分支名称 -b:创建并切换到dev git checkout -b dev
-
在dev分支上进行开发,master分支不变
git add readme.txt git commit -m "branch test"
-
此时,变更发生在dev分支上,如果切回master,看不到变更信息
# 切回到master分支,不会看到dev分支上的修改内容 git checkout master
-
master分支合并dev分支
# 切回master分支,再进行合并 git merge dev
-
删除dev分支
# 切回master分支,删除dev分支 git branch -d dev
7. IDEA中使用Git
7.1 配置git
7.2 添加工程到git
7.3.1 创建工程
7.3.2 创建本地仓库
选择存放本地仓库的位置
7.3.3 提交工程
点击提交按钮
输入日志信息
7.3.4 推送到远程仓库