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