基本介绍
版本控制工具用处:
- 备份
- 代码还原
- 协同开发
- 追溯
版本控制工具
1、集中式版本控制工具
版本库是集中存放在中央服务器的,team 里每个人 work 时从中央服务器下载代码,是必须联网才能工作,局域网或互联网。个人修改后然后提交到中央版本库。
举例:SVN 和 CVS
2、分布式版本控制工具
分布式版本控制系统没有“中央服务器”,每个人的电脑上都是一个完整的版本库,这样工作的时候,不需要联网,因为版本库就在自己的电脑上。多人协作只需要各自的修改推送给对方,就能互相看到对方的修改了
举例:Git
工作流程
2 常用命令
2.1 获取本地仓库
2.2 基础操作指令
Git 工作目录下对于文件的修改(增加、删除、更新)会存在几个状态,这些修改的状态会随着我们执行 Git 的命令而发生变化:
git add (工作区 --> 暂存区)
touch newtext.txt
新建文件(linux指令)
git add .
把 所有工作区的文件 添加到 暂存区
现在是待提交状态
git commit (暂存区 --> 本地仓库)
git commit -m "wyn01"
查看状态
git log 查看提交日志
命令形式:git log [option]
options:
- --all 显示所有分支
- --pretty=oneline 将提交信息显示为一行
- --abbrev-commit 使得输出的commitId更简短
- --graph 以图的形式显示
注:按 q 键退出
2.3 版本回退
git reset --hard commitID
commitID 可以使用 git log 指令查看
3 分支
几乎所有的版本控制系统都以某种形式支持分支。 使用分支意味着你可以把你的工作从开发主线上分离开来进行重大的 Bug 修改、开发新的功能,以免影响开发主线
3.1 查看本地分支
git branch
3.2 创建本地分支
git branch 分支名
3.3 切换分支
git checkout 分支名
在新的分支中加新的文件 secondtext.txt
回到主分支,新文件没了
另外,还可以直接切换到新的分支(创建):
git checkout -b 分支名
3.4 合并分支
git merge 分支名称
在分支【master】里面文件写
a=1;
b=2;
printf(a+b);
在分支【branch01】里面文件写
a=1;
b=2;
printf(a*b);
然后合并
有冲突
a=1;
b=2;
<<<<<<< HEAD
printf(a+b);
=======
printf(a*b);
>>>>>>> branch01
需要手动处理,然后 git add、git commit 提交
3.5 删除分支
不能删除当前分支,只能删除其他分支
删除分支时,需要做各种检查
git branch -d 分支名
不做任何检查,强制删除
git branch -D 分支名
3.6 开发中分支使用原则与流程
- master (生产) 分支
线上分支,主分支,中小规模项目作为线上运行的应用对应的分支
- develop(开发)分支
是从 master 创建的分支,一般作为开发部门的主要开发分支,如果没有其他并行开发不同期上线要求,都可以在此版本进行开发,阶段开发完成后,需要是合并到 master 分支,准备上线
- feature/xxxx分支
从 develop 创建的分支,一般是同期并行开发,但不同期上线时创建的分支,分支上的研发任务完成后合并到 develop 分支
- hotfix/xxxx分支
从 master 派生的分支,一般作为线上 bug 修复使用,修复完成后需要合并到 master、test、develop 分支
还有一些其他分支,在此不再详述,例如 test 分支(用于代码测试)、pre 分支(预上线分支)等等
4 GitHub
4.1 添加 SSH key
4.2 创建 github repository
获取项目的仓库地址
在 git bash 里面:
git remote add 远程仓库名 git@github.com:RainNan/test.git
git remote
用于查看远程仓库
4.3 Push & Pull
push
将本地仓库的更改推送到远程仓库
git push origin master
pull
用于从远程仓库拉取最新的更改并合并到本地仓库
git pull origin master
4.4 clone
git clone 远程仓库地址
4.5 .gitkeep
.gitkeep 是一个通常在空的 Git 仓库目录中创建的文件,其主要目的是保持该目录在 Git 仓库中。在 Git 中,空目录不会被跟踪,因此如果你想 让一个目录被 Git 跟踪 ,但又不想在该目录中添加任何其他文件,就可以创建一个名为 .gitkeep 的文件