Git和GitFlow分支管理
1. Git和SVN的区别
SVN是集中式版本控制系统
Git是分布式版本控制系统,有远程仓库,本地仓库,分支组成。
2. Git本地仓库和工作区
远程仓库——保存我们代码的服务器
本地仓库——连接本地代码和远程代码的枢纽,不能联网时本地代码可以先提交到本地仓库
暂存区——提交代码,解决冲突的中转站
工作区——我们创建的工程文件,在编辑器中可直观显示
分支——就是从主线上分离出来的一个快照
3.Git基础命令流程图
Clone:克隆远程仓库到本地目录,并初始化本地工作区
Fetch:从远程仓库获取最新内容到本地仓库
Push:推送本地版本库内容到远程仓库
Pull = Fetch + Merge:拉取远程仓库内容并合并到本地工作区,一般建议分开使用
4. Git常用命令
创建版本库
| 命令 | 功能 |
|---|---|
git clone <url> |
克隆远程版本库 |
git init |
初始化本地版本库 |
修改和提交
| 命令 | 功能 |
|---|---|
git status |
查看状态 |
git diff |
查看变更内容 |
git add . |
跟踪所有改动过的文件 |
git add <file> |
跟踪指定的文件 |
git mv <old> <new> |
文件改名 |
git rm <file> |
删除文件 |
git rm --cached <file> |
停止跟踪文件但不删除 |
git commit -m "commit message" |
提交所有更新过的文件 |
git commit --amend |
修改最后一次提交 |
查看提交历史
| 命令 | 功能 |
|---|---|
git log |
查看提交历史 |
git log -p <file> |
查看指定文件的提交历史 |
git blame <file> |
以列表方式查看指定文件的提交历史 |
撤销
| 命令 | 功能 |
|---|---|
git reset --hard HEAD |
撤销工作目录中所有未提交文件的修改内容 |
git checkout HEAD <file> |
撤销指定的未提交文件的修改内容 |
git revert <commit> |
撤销指定的提交 |
分支与标签
| 命令 | 功能 |
|---|---|
git branch |
显示所有本地分支 |
git checkout <branch/tag> |
切换到指定分支或标签 |
git branch <new-branch> |
创建新分支 |
git branch -d <branch> |
删除本地分支 |
git tag |
列出所有本地标签 |
git tag <tagname> |
基于最新提交创建标签 |
git tag -d <tagname> |
删除标签 |
合并与衍合
| 命令 | 功能 |
|---|---|
git merge <branch> |
合并指定分支到当前分支 |
git rebase <branch> |
衍合指定分支到当前分支 |
rebase——把分叉的提交历史“整理”成一条直线,看上去更直观
远程操作
| 命令 | 功能 |
|---|---|
git remote -v |
查看远程版本库信息 |
git remote show <remote> |
查看指定远程版本库信息 |
git remote add <remote> <url> |
添加远程版本库 |
git fetch <remote> |
从远程库中获取代码 |
git pull <remote> <branch> |
下载代码及快速合并 |
git push <remote> <branch> |
上传代码及快速合并 |
git push <remote> : <branch/tag-name> |
删除远程分支或标签 |
git push --tags |
上传所有标签 |
5. GitLab远程仓库管理流程
- GitLab注册登录
- 远程仓库创建
- 分支创建,默认分支设置
- 分支权限配置
- 克隆远程仓库
- 本地文件添加、修改、提交、推送、拉取等操作
6. Git分支策略
主分支
在远程中央代码库中一直存在的分支。不允许开发者在主分支直接进行修改和提交。
Master(生产分支)
生产环境代码中心分支,每次发布成功上线后都打上标签
Develop(开发分支)
测试环境代码中心分支,功能开发完成后,合并Feature功能分支代码到此分支进行测试。
辅助分支
是发挥相应的功能后就被删除的临时分支。
Feature(功能分支)
从Master分离出来的被用于开发特定功能的分支。功能开发结束后被合并到Develop中。上线成功后,可以删除此功能分支。不允许直接拉取Devlop分支。
Release(发布分支)
从Master分离出来的为发布做准备的分支。在发布的准备工作期间,为了避免多余的 Feature混杂到发布中而建立的分支。发布结束后被合并到 Master 分支。
7. GitFlow 工作流程
- 初始化项目(init gitflow):初始化Master主分支从Master复制一个Develop主分支
- 功能开发:从Master复制一个Feature(功能)分支,开始开发
- 功能测试:在Develop主分支上合并要测试的Feature功能分支
- 版本发布:从Master复制一个Release分支,然后合并一个或多个Feature功能分支到Release(发布)分支,成功上线后,合并到Master主分支,然后打上标签Tag版本号,最后,删除发布分支
8. IDEA如何使用Git进行代码管控
- IDEA导入Git项目
- IDEA分支切换
- IDEA代码修改、提交、push、pull
- IDEA代码提交回退revert和revert commit
,合并到Master主分支,然后打上标签Tag版本号,最后,删除发布分支
8. IDEA如何使用Git进行代码管控
- IDEA导入Git项目
- IDEA分支切换
- IDEA代码修改、提交、push、pull
- IDEA代码提交回退revert和revert commit
- IDEA不同分支代码合并和cherrypick