下面的例子将演示Gitflow流程如何被用来管理一次产品发布
1. 给默认的master配备一个develop分支
git branch develop
git push -u origin develop
其他开发者应克隆(clone)中央仓库,并为develop创建一个追踪分支
git clone ssh://user@host/path/to/repo.git
git checkout -b develop origin/develop
2. 开发新功能
git checkout -b some-feature develop
git status
git add .
git commit
3. 功能开发完成
获取远程端dev分支最新版本代码,并入本地dev分支。
git pull origin develop
切换至dev分支,并合并新功能分支
git checkout develop
git merge some-feature
git push
git branch -d some-feature
4. 开始准备一次发布
专门用于发布前的准备,包括一些清理工作、全面的测试、文档的更新以及任何其他的准备工作
git checkout -b release-0.1 develop
5. 完成发布
git checkout master
git merge release-0.1
git push
git checkout develop
git merge release-0.1
git push
git branch -d release-0.1
6. 发现BUG
基于master创建了一个用于修复BUG的分支
git checkout -b issue-#001 master
修复Bug,测试。合并到master分支
git checkout master
git merge issue-#001
git push
跟用于发布的分支一样,在维护分支上的改动也需要合并入develop分支,这一点是很重要
git checkout develop
git merge issue-#001
git push
删除新建的修复BUG的分支
git branch -d issue-#001
当前分支已经有关联分支,并且关联分支与当前分支同名;
git push
同步指定分支(非当前分支)到远程分支,如果是当前分支则<local_branch>可以省略
git push origin <remote_branch>
将本地分支推送到远程不同名的分支;
git push origin <local_branch>:<remote_branch>
工作流程总结
====准备开发====
1. 更新develop分支 git pull origin develop
2. 新建并切换分支 git checkout -b <分支名> develop
====开发中====
3. 添加更新内容 git add .
4. 提交更改 git commit -m "更改的内容注释"
====开发完成====
5. 切换到develop分支 git checkout develop
6. 更新develop分支 git pull origin develop
7. 合并前面开发完的分支 git merge <分支名>
8. 提交到远程仓库 git push
9. 删除分支 git branch -d <分支名>
10.强制删除分支 git branch -D <分支名>
Merge branch
每次合并分支的时候,都会跳出一个 commit message 编辑窗口。其实是正常的。
使用 git help merge,查看git merge的文档。
合并前:
A---B---C topic
/
D---E---F---G master
合并后:
A---B---C topic
/ \
D---E---F---G---H master
所以, commit message 是自动添加的,是 master 分支的 H 提交点的注释。
如果你实在讨厌这个commit,可以在merge时添加--no-commit。这样就不会产生commit message了。
不过不推荐这么做,这样的话,就不容易区分merge的结果了。
简易Git工作流
【注】
- 简易工作流中,【远程库】只有一个
master
分支。 - 所有命令都在【本地项目根目录】中操作。
git rebase
命令,只能在【新建的私有分支】中使用,不可在【共享分支】(master分支)中使用。
准备开发(新建wowrk分支):
从【远程库】更新【本地库】主分支(master分支)
git pull
从当前分支【新建wowrk分支】,并【切换到wowrk分支】
git checkout -b wowrk
本地开发和提交(在wowrk分支中开发):
修改,添加,删除文件
# 添加指定文件(项目根目录的相对路径)到【暂存区】: git add dir123/abc123.txt # 删除【暂存区】的文件 git rm --cached dir123/abc123.txt # 或者添加本地所有更改到【暂存区】 git add .
提交【暂存区】文件到【本地库】
git commit -m "注释内容"
分支合并与推送
从【远程库】更新【本地库】主分支
git fetch origin master:master
合并更新后的【主分支】到当前分支(wowrk分支). 有冲突则解决冲突
git rebase master
推送【本地库】的【wowrk分支】到【远程库】主分支
git push origin wowrk:master
结束(可选)
切换回【主分支】
git checkout master
删除wowrk分支
git branch -d wowrk
常见Git命令
# 查看工作区状态
git status
# 文件比较
git diff --stat
git diff abc.txt
# 查看本地库的commit提交日志
git log
# 从提交日志的commitID回滚工作区和本地库
git reset --hard a52e7b04ca5fd622bd044ea6e4ef29719e54d0fb
# 查看本地分支
git branch
# 删除分支
git branch -d wowrk
# 强制删除分支
git branch -D wowrk
Gitflow工作流程 https://blog.csdn.net/happydeer/article/details/17618935
如何正确使用Git Flow https://www.cnblogs.com/wish123/p/9785101.html
玩转git-flow 工作流 https://blog.csdn.net/qq_33524158/article/details/86702527
push的使用 https://cloud.tencent.com/developer/article/1439517