Git Flow

时间:2019-10-21 11:58:25   收藏:0   阅读:68

参考文章:

  1. 简介我的Git Work Flow
  2. 如何优雅的使用Git
  3. Git工作流程

我的Git Flow

  1. master 是长期分支,一般用于管理对外发布版本,每个 commit 对一个 tag,也就是一个发布版本

  2. develop 是长期分支,一般用于作为日常开发汇总,即开发版的代码

  3. feature 是短期分支,一般用于一个新功能的开发

  4. hotfix 是短期分支 ,一般用于正式发布以后,出现 bug,需要创建一个分支,进行 bug 修补。

  5. release 是短期分支,一般用于发布正式版本之前(即合并到 master 分支之前),需要有的预发布的版本进行测试。release 分支在经历测试之后,测试确认验收,将会被合并的 developmaster

开发新功能步骤

  1. 从开发分支拉一个功能分支
  2. 功能分支开发和测试
  3. 功能分支 rebase 开发分支(为什么)
  4. 功能分支合并到开发分支(Merge Request

注意:

fix bug 步骤

测试线bug的修复

和开发步骤类似

线上bug的修复

  1. 从master拉一个fix分支(为什么是master)
  2. 测试完后 rebase master
  3. 合并回master

Git使用要求

commit

  1. commit message 言简意赅,不要写无用信息。不要出现 『update』,『Bug Fix』,『Merge Branch ......』, 这样让别人不能领其意的描述

  2. 在master和develop上一次commit是一个功能,对于在feature分支上一个功能中有多次提交的情况,在提交Merge Request之前,需要合并为一次commit(使用git reset sha1撤销之前的commiit,再重新提交一次commit来合并,或者git commit --ammend),并@组内人员进行代码评审

Rebase

不要出现反向拉取代码的情况,即看到 develop 有更新,就将 develop 的代码拉取 merge 进自己的分支。

原因是:

  1. merge 会导致你的分支都会引入一个外来的合并提交。如果 develop 非常活跃的话,或多或少会污染你的分支。
  2. 丑,Network 复杂,增加理解项目历史的难度。

如何解决当前 develop 有更新的情况?

请使用 rebase

Git 使用技巧

rebase 和 merge

git rebase一般解释为变基,也有解释为衍合

git mergegit rebase 都可以整合两个分支的内容,最终结果没有任何区别,但是变基使得提交历史更加整洁。

提交点顺序

分支变化

什么时候使用 rebase / merge

假设场景:从 dev 拉出分支 feature-a。那么当 dev 要合并 feature-a 的内容时,使用 git merge feature-a;反过来当 feature-a 要更新 dev 的内容时,使用 git rebase dev

使用时主要看两个分支的"主副"关系。

注意

一般来说,rebase后的 dev 和远程的origin/dev会发生分离,在命令行界面中会提示:

Your branch and 'origin/dev' have diverged,
and have 1 and 1 different commits each, respectively.
  (use "git pull" to merge the remote branch into yours)
复制代码

这时需要用git push -f强制推送,覆盖远程分支。若使用了提示中的git pull,结果会变成合并,并产生一个合并提交点。

慎用git push -f!

git pull --rebase

与 git pull 的区别

在一般情况下,加与不加 --rebase 是没有区别的。

然而,从上面说的 git rebase 功能得知,某个分支可能与其远程分支发生分离,而当你 pull 时使用 git pull,则会变成你的本地分支和远程分支合并。

正确的做法是git pull --rebase,才会拉取到最新的分支。

因此推荐在任何时候 pull 远程分支,最好加上 --rebase 参数。

reset 和 revert

git reset 常用命令

git reset HEAD~1
git commit
复制代码

————————————————————

git reflog

查看提交记录的命令是git log,而git reflog的功能是查看本地操作记录,可以看到本地的commit, merge, rebase等操作记录,并带有版本号。

b3bf634 HEAD@{0}: rebase -i (finish): returning to refs/heads/feature-rebase-i
b3bf634 HEAD@{1}: rebase -i (fixup): 完善a中的判断和输出
dd19de3 HEAD@{2}: rebase -i (fixup): # This is a combination of 2 commits.
c138acf HEAD@{3}: rebase -i (reword): 完善a中的判断和输出
a7f47b2 HEAD@{5}: rebase -i (start): checkout dev
a472934 HEAD@{6}: rebase: aborting
a7f47b2 HEAD@{7}: rebase -i (start): checkout dev
a472934 HEAD@{8}: commit: 添加a输出
c84d5b7 HEAD@{9}: commit: 添加a中的判断
a5a6e64 HEAD@{10}: commit: 修改a内容
a7f47b2 HEAD@{11}: checkout: moving from dev to feature-rebase-i

git stash

把工作区内容缓存到一个栈里,之后用 git stash pop取出。在未提交工作区内容,但是想切到其他分支时非常有用。

注意

不建议同一时间段在不同分支都使用 git stash,涉及到多个分支的情形还是先 commit 较好,不push到远程,下次 commit 时可用 --amend 合到上次提交中。

原文:https://www.cnblogs.com/cherishSmile/p/11710639.html

评论(0
© 2014 bubuko.com 版权所有 - 联系我们:wmxa8@hotmail.com
打开技术之扣,分享程序人生!