git 临时修改 bug 要怎么创建分支

2020-07-20 14:54:09 +08:00
 luxinfl

前提:现在有 dev,test,master 分支。测试分支此时发现了一个 bug,但是当前有开发任务在 dev 分支上面,不想提交 dev 的代码。

是不是可以这样处理:在 test 上面拉一 test-bug 个分支,在 test-bug 分支上面修改完之后,合并到 test 分支。 但是有个疑惑,此时 dev 分支肯定也是有 bug 的。这个时候我应该把 test-bug 分支改完的代码合并到 dev 还是从 test 分支拉代码回来?如果从 merge test-bug into dev,再 merge dev into test,不就相当于 bug 提交了两遍吗?

4727 次点击
所在节点    git
38 条回复
faceRollingKB
2020-07-20 19:28:00 +08:00
我把 test 、dev 搞反了,你说的方式是对的,bug 没有被提交两遍,最终的 commit history 中只有一个 commit 跟 bug 相关,其他的都只是 dev 的 commit,所以没关系
railgun
2020-07-20 19:32:23 +08:00
test 切出 bugfix 分支,改完后合并回 test,再 merge test 到 dev
faceRollingKB
2020-07-20 19:33:01 +08:00
可以看下文档 https://git-scm.com/book/en/v2/Git-Branching-Basic-Branching-and-Merging

分支只是 commit history 中某个 commit 的引用,跟 svn 的方式不一样的
orzorzorzorz
2020-07-20 20:20:11 +08:00
一般哪里有 bug 就改哪里。如果想避开提交记录的重复,可以从 dev checkout 出去,改完 squash 进 dev,然后 merge 进 test,这样看上去会清晰一些。
admin7785
2020-07-20 22:44:04 +08:00
dev:git stash
dev:git checkout test
test:git checkout -b test-bug
test-bug:git push
test-bug:git checkout test
test:git merge test-bug
test:git checkout dev
dev:git merge test

如果哪一步不对,还请指正
mritd
2020-07-21 08:22:36 +08:00
遵循 gitflow 吧
yizmaoaa
2020-07-21 09:16:40 +08:00
提交到 dev,然后 cherry pick 到 test
cco
2020-07-21 09:34:10 +08:00
从有 bug 的分支 checkout 出来一个 hostfix/xxxx 的分支,修改提测没问题合并到该分支以及基于该分支的其他分支。
guanerlin
2020-07-21 11:37:19 +08:00
@ferock 在测试阶段发现的 bug 是 bugfix
guanerlin
2020-07-21 11:37:58 +08:00
@luxinfl 我的意思是,流程是这样,所以你不要考虑这个分支往 dev 流动
luxinfl
2020-07-21 11:38:21 +08:00
@admin7785 额,最后一步和你不太一样,我是 dev:git merge test-bug
luxinfl
2020-07-21 11:39:42 +08:00
@faceRollingKB 最后从 dev 合到 test 的时候,会有 test-bug 合到 dev 的记录。。我记得是这样的
luxinfl
2020-07-21 13:59:06 +08:00
@faceRollingKB 看了一下,发现其实 test-bug 分支不需要去合到 dev 里面,dev 开发完直接合过去,有冲突解决冲突就行了
luxinfl
2020-07-21 14:08:31 +08:00
@admin7785 我看了 git 文档,好像不需要吧 test-bug 合并到 dev 分支,dev 改完之后,直接合到 test 就行了。然后可以拉新的 dev 分支
faceRollingKB
2020-07-21 16:19:11 +08:00
@luxinfl 最后合并三个分支 dev 、test 、bug 无论什么顺序结果都是一样的,你都需要处理 3 ~ 4 次 merge,一次解决 conflict,另外几次 fastforward 修改 pointer(同步分支引用),没有拉新 dev 分支的必要
index90
2020-07-21 16:52:01 +08:00
你这种情况属于主干开发,分支发布。
发布分支上发现了 bug,在发布分支上修复,并遴选到主干上。
#33 有 conflict 应该尽早处理,等你过了几个星期开发完 dev 分支,估计都忘了那个 test-bug 了。

前面有人提到 git flow,其实你的 test 分支相当于线上分支,以这样的视角参考 git flow 。
admin7785
2020-07-22 10:46:43 +08:00
@luxinfl #34 但是不应该是立即切个 test-bug 出来解决 bug 吗,解决完之后还要在 dev 做第二次修改吗?

看了你 33 楼的回复,应该是没问题的,合并的时候解决冲突就行,最后一步合到 dev,可以避免解决冲突这一步,都差不多,我日常中会选择合并。
luxinfl
2020-07-22 13:44:50 +08:00
@admin7785 反正公司也没人会关注提交日志什么的,现在 bug 分支就两头合,无所谓了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/691589

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX