git 问题咨询

2022-04-05 20:59:30 +08:00
 JadePenG

git 用的比较少, 所以来询问一下大佬们,我遇到如下场景有什么方式可以处理。 目前项目只有一个分支,master 分支。 假如我目前在开发当前项目的 V1.2 版本,但是 V1.1 版本有 BUG 时,我需要修改对应的代码。 但是 V1.2 版本的新功能不可能在一次 BUG 修复中就发布出来。那么此时我应该怎么处理 V1.2 版本新功能的代码呢?

可以不通过新建一次分支的情况下处理嘛。 [这是重点哦]

3090 次点击
所在节点    程序员
33 条回复
fiypig
2022-04-05 21:05:02 +08:00
同问
dvsilch
2022-04-05 21:10:55 +08:00
在本地新建一个分支推到 master 都不行吗?
gengchun
2022-04-05 21:12:11 +08:00
用分支

https://git-scm.com/book/en/v2/Git-Branching-Branches-in-a-Nutshell


Because a branch in Git is actually a simple file that contains the 40 character SHA-1 checksum of the commit it points to, branches are cheap to create and destroy. Creating a new branch is as quick and simple as writing 41 bytes to a file (40 characters and a newline).
pagxir
2022-04-05 21:14:20 +08:00
这个跟 git 没关系吧,这个是分支管理的问题,即使你换成 SVN 也一样需要考虑怎么去管理分支,什么时候合并分支
marat1ren
2022-04-05 21:16:04 +08:00
假设 v1.2 还是在你的本地 master ,那么你可以先把 v1.1 的修复 push 到 master 上去。然后 rebase 有修复的 master 。第二种情况,如果 master 上已经是 v1.2 了,那只能建议新建一个基于 v1.1 的 branch ,把修复 push 到这个新 branch 上。
CEBBCAT
2022-04-05 21:19:48 +08:00
你要是实在想问,那么 stash 可以解决你的问题,rebase+checkout 也许也可以

但是你这么做,用的还是 git 吗?以上操作有较高的丢失代码的风险。你未来开发到 2.0 的时候,又该要怎么修复 1.1 的 bug 呢?
nightwitch
2022-04-05 22:09:06 +08:00
先从你当前远程的那个 commit id 分叉一个分支 v1.1 ,然后修复 bug ,push 到远端。
本地的 master 有一堆 v1.2 的代码还没实现完,rebase 到修复完 bug 的分支上。
christin
2022-04-05 22:15:45 +08:00
只有一个分支万一出问题怎么办 建议多开几条分之,又不要钱
msg7086
2022-04-05 23:57:09 +08:00
不新建分支还用什么 git 。你就算是新建文件夹( 1 )那也是分支啊。
zkd8907
2022-04-06 00:12:12 +08:00
在一些管理的方式下 v1.1 应该是一个 tag ,它会指向到 master 上的一个 commit 。如果 v1.2 在 master 上开发并且又要修改 v1.1 的 bug ,可以直接从 v1.1 的 tag 拉一个新的 hotfix 分支进行开发修复,修复后通过打 v1.1.1 tag 进行发布,同时将 master 也 rebase 到 v1.1.1 上,这样 master 也会包含这个改动。
FieldFarmer
2022-04-06 01:09:10 +08:00
另开一个目录重拉远程 v1.1 版本的项目代码,修复后推到远程。
v1.2 commit 后,git pull ,有冲突解决冲突,没冲突继续开发
AItsuki
2022-04-06 01:37:26 +08:00
异想天开,我想不出能比新建一个 bugfix 分支更简单的方式。
duke807
2022-04-06 04:33:21 +08:00
op 最大的問題其實是 git 用的不熟,我的觀念一直是:git 必須要非常熟悉,才能提高工作效率,否則反而會降低工作效率,搞不好還會把自己坑死
dangyuluo
2022-04-06 05:39:29 +08:00
@zkd8907 正常情况下应该有一个 release-v1 的分支,然后 v1.1 这个 tag 应该指向 release-v1 上的一个 commit 。这时把修复 push 到 release-v1 上,再创建一个 v1.1.1tag 就可以了。定期的,相关 fix 应该被 cherry-pick 到 maste 上
caeger
2022-04-06 08:33:22 +08:00
git 创建新分支要开始收费了?
SenLief
2022-04-06 08:38:12 +08:00
git 的分支开销非常的小啊,随意开新分支就好了。
caixiangyu17
2022-04-06 08:41:41 +08:00
Trunk Based development + feature toggle flag
我们就是只有一个分支,所有人直接 push master ,直接 CI/CD 上生产环境,所以这里对 CI/CD 的各种测试要求很高。
如果不想这么麻烦,可以 CI/CD 直接发布到 test 服务器上,先测,然后手动部署到 prod 上
tedzhou1221
2022-04-06 09:04:33 +08:00
不新建分支,你可以把修复好的代码 cherry-pick 到 v1.2 分支上。

我们还有同事试过,在 v1.1 上修复代码并提交后,再把 v1.1 合并到 v1.2
chengyiqun
2022-04-06 09:36:26 +08:00
不用分支还不如不用 git 。git 最大的优点就是分支建立代价很小。
raykle
2022-04-06 09:42:02 +08:00
不新建分支你用什么 git

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

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

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

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

© 2021 V2EX