公司项目终于从 svn 迁移到 git 了,目前碰到一些问题想请教下。

2023-12-07 14:06:48 +08:00
 helee9199

起因还是之前系统问题,因为服务器 SVN 版本过老, 遂建议迁移 git ,讨论了一下决定可以。
于是我就帮忙架了 gitea
使用都还好 ,目前碰到一个问题是,多人同时改一个项目时频繁出现
Merge remote-tracking branch 'origin/main'

说一下我们的情况, 小公司 小团队,10 开发人员。 项目也比较老,没有模块化,所以不是那种每人负责自己的模块那种。 我一个人的提交线就是一条直线, 但是当有别人提交的时候 很容易就出现 Merge remote-tracking branch 'origin/main' 虽然好像也没啥影响。
因为就这么点人,使用方面就是 线上版本用分支 onlie 和 main 分支做开发版 ,
有什么都往 main 里提。线上有问题就切 onlie 改线上的,等没啥情况了再合到 main 。 但是目前几乎只要提交记录里出现别人 就会出现这个提示。 提交前更新在第一次出现这个问题的时候,也交代了大家,也做了,但是还是出现了。 查了下 好像没什么影响。但是就是看着有点烦。

所以想问下。git 的正确姿势是什么。我们的使用方法有哪些需要改正的?

4110 次点击
所在节点    程序员
35 条回复
SilentOrFight
2023-12-07 17:47:31 +08:00
每个人一个分支,把改动的 commit cherry-pick 到主分支合并测试
zero47
2023-12-07 17:48:52 +08:00
共用分支太频繁的锅,commit 的时候没 pull ,别人 push 后 head 就对不上了,一般 gui 的 git 就会帮你生成这个 merge ,个人分支定期合并到公共分支会好点。
kogorou
2023-12-07 22:37:30 +08:00
每次开发新功能的时候就从主分支切一个新分支分配给开发者,开发人员在这个分支上 commit,push ,完成以后让开发人员提交 pull request ,然后你审核好她的代码没问题,再把这个分支 merge 到主分支上去。关键就是,merge 这个事情让一个人做,不能大家都往上 merge 。
kogorou
2023-12-07 22:38:57 +08:00
一个人一个分支,一个功能一个分支,切分支又不花钱。
bthulu
2023-12-08 08:40:19 +08:00
CTRL+T 拉代码的时候, 下面两个选项默认选中的是第一个, 你戳一下选中第二个就没有 Merge remote-tracking branch xxx 了

Merge incoming changes into the current branch.
Rebase the current branch on top of incoming changes
lovelylain
2023-12-08 08:53:27 +08:00
强迫症吗?实在是不喜欢有 merge 提交,可以 rebase 再 merge ,例如开发分支 dev 主干分
支 main ,在发布前:
git checkout dev
git fetch
git rebase origin/main #这一步如果有冲突,处理起来比直接 merge 麻烦
git checkout main
git merge dev
我以前喜欢在发布前这么干,可以使一个特性的提交集中到一起,后来因为冲突解决更麻烦和 dev 分支要 push -f ,改直接 merge 了
balabalaguguji
2023-12-08 09:01:01 +08:00
要不试下我们的 SVN 代码托管平台: https://svnbucket.com
a33291
2023-12-08 09:16:39 +08:00
我也经常见到这个,原因是 IDE 的自动化机制导致的,至少 vs 会这样.
我使用独立的 git 管理工具,从不出现这个问题
tearzx
2023-12-08 09:26:48 +08:00
git pull -r
horizon
2023-12-08 09:28:04 +08:00
gitlab flow
mengdodo
2023-12-08 10:43:07 +08:00
不模块化就是找罪受,同一个文件所有人反复改,最后被别人丢弃了都不知道
helee9199
2023-12-08 10:50:29 +08:00
@mengdodo 快 20 年的项目改来改去的
同事习惯也不好。没用的代码不删,注释丢在那 。也不格式化。不会抽取。不停造差不多的轮子。
甚至 jdbc 的 rs 连线不关被我发现了,狡辩说 rs 不是连线。 提交记录是为了解决宕机问题
比我早进公司一年( 6 年),就这水平混到现在。
另外我们是真扁平化。质量没人管。
10 个人 只有包括我在内的 2 3 个人习惯好一点。
现在的代码就是屎屎屎屎山。
鉴于在四线城市。薪资凑合,不加班。前年鉴于此想跳槽来着,但是薪资打 8 折 ,还单双休。
就只能在这养老了
7inFen
2023-12-08 10:50:42 +08:00
建议把 online 设为保护分支,只有 leader 可以从 main 合并到 online
main 分支代码是主分支,再切一个 dev 分支各自开发,开发测试完合并到 main 分支
nothingistrue
2023-12-08 14:50:42 +08:00
在还不熟悉 git 工作流的时候,先强制禁用默认的 merge pull ( fetch + merge ),改为 rebase pull ( fetch + rebase ),这样的话,提交历史的表现会跟 svn update 一样的。
rnv
2023-12-08 16:51:05 +08:00
git pull --rebase 试试

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

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

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

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

© 2021 V2EX