同事从大厂出来的,之前不知道 git add 可以提交部分文件,现在又听都没听过 cherry pick

2025 年 12 月 11 日
 dumplingsK

如题,非常不解。难道大厂没有版本管理么?咨询了一下,说是一个人七八个项目,根本没有时间管理。 压力这么大的么?

13843 次点击
所在节点    职场话题
190 条回复
Vaspike
2025 年 12 月 12 日
@SWALLOWW 我在 dev 分支中有 commitA 和 CommitB, main 分支没有这两次提交, 现在线上需要立即有 commitA 的修改而不要 commitB 的修改, 那么:
1. 切换分支到 main
2. cherry-pick dev 分支的 commitA
3. 上线 main 分支
chill777
2025 年 12 月 12 日
水货很多,我司 10 年老前端不知道 typescript 和 linux
xz410236056
2025 年 12 月 12 日
@MENGKE #107 你小瞧 GUI 了,你知不知道 GUI 也可以实现自定义操作,能用 GUI 不用只用 CLI 的都是保守派。
realJamespond
2025 年 12 月 12 日
分支改动太大,不能 rebase ,最后只能 cherry pick 一个一个 apply commit
eephee
2025 年 12 月 12 日
这个帖子的评论里,我没有看到有人在刻意秀优越感,只看到有人一个劲地让别人不要秀优越感,笑死
imxiaoi
2025 年 12 月 12 日
一般都是多版本管理才用这个吧
sth2018
2025 年 12 月 12 日
cherry pick 超级好用
wxm
2025 年 12 月 12 日
工作 10 年了,前 2 年用 svn 然后换了 git 一直用到现在,工作这么久没用过 cherry pick 我真的很抱歉。。
我们分支 feature dev test release hotfix tag master 这些分支都非常明确,也有严格的工作流不太会出现一次提交合并到多分个支上
我一直在用 sourcetree 我也觉得很好用啊,用命令我倒觉得有点麻烦。sourcetree 也是领导推荐用的,不过总是能看到用命令比 gui 高人一等的说法,能解决问题自己用着舒服不就好了吗。。
lixile
2025 年 12 月 12 日
不仅仅是多版本 仓库体量大 共同开发人员多 cherry-pick 的场景就应该确实存在
单仓单版本 维护人员少 估计就很少会用 cherry-pick 全部被 merge rebase 取代了
还有就是不要期待从 svn 简陋的转移过来大厂 git linux 基础技能 任重道远 我只能说这些人有他的生态位
但是跟你密切合作时 我就希望他别在这里工作 天天讲基础知识 心态会容易崩溃
uni
2025 年 12 月 12 日
我更好奇一个人七八个项目是怎么搞,一年七八个还是同时开发七八个?
bluehtt
2025 年 12 月 12 日
@wenrouxiaozhu #134 是啊,所以我怀疑他是用 vscode 之类的编辑器
onll42y
2025 年 12 月 12 日
@YsHaNg 那还得是 git rebase -i
MENGKE
2025 年 12 月 12 日
@xz410236056 #143 冲突吗,并不吧?习惯用 GUI 就可以不知道基本的命令了吗
blirun
2025 年 12 月 12 日
客户端不会命令还比较正常吧,服务端应该不正常
shm7
2025 年 12 月 12 日
@elron #117
148 和 108 楼已经写明了常见的分支工作流是怎么回事。gitlab 官方也是建议这么来的。不会用可以学。

cherry-pick 在某些开发环境异常繁杂的团队也许是有用的,比如你说的几十几百个分支情况。

在我看来,这就像很早先的 goto 语法,很快用到,但乱七八糟。

如果让你选,你想把项目搞成几十个 alive 分支乱起八糟的开发嘛。说白了,shit moutain + 业务开发压力特别大的团队,特别喜欢用。因为正常流程已经不起作用了。
shm7
2025 年 12 月 12 日
@wnpllrzodiac #57 > 分支修改了 50 个文件,只想提交其中的 20 个文件的改动,有命令么?

git add 把你的文件一个个加上,这些文件就会进入 stage 暂存模式,git commit 时候只会提交 stage 过的文件。
或者你直接用 gui 工具一个个点,更方便
wenrouxiaozhu
2025 年 12 月 12 日
@bluehtt #151 不知道 add 有点抽象==...会不会好多人不知道工作区、暂存区
shm7
2025 年 12 月 12 日
@Vaspike #141 你也可以从 commitA checkout 出一个新分支,该分支可以 dev 平行的开发分支合并到 master ,还可以做点其他修改。PS 你还要把 master 也先合并到你这个分支,还要测试确认所有功能开发无误。
总之,用分支都是可以的。而且是 gitlab 官方更推荐的做法。草草把一个 hash 推到 master ,甚至连测试都没有。不符合推荐的上线流程。
shm7
2025 年 12 月 12 日
看了半天,都是些经验匮乏还喜欢论道,甚至在一些恶劣环境学了些歪门邪道,就以为是屠龙技 说别人不会以此炫耀 的东西。

怪不得程序员 35 岁会这么惨,拿着锤子个个是钉子,一个个天天问别人开展什么副业好抄袭取代之...
elron
2025 年 12 月 12 日
@shm7 cherry-pick 从来不是复杂团队或者代码屎山才用,它本身就是 git 非常非常非常的常规能力。

如果一个人从来不用 cherry-pick ,我基本能判断他参与的项目规模和协作强度有限,你不要反驳,事实就是如此。

像你说的 gitlab 的推荐工作流,cherry-pick 和它并不冲突,反而是配套动作,挑选某个已验证的提交回拣到 release/hotfix ,本什就是标准发版维护的一部分,并不是项目烂到不行才会用。

总之就一句话,同一份改动、多条线受控落地,这就是 cherry-pick 的设计逻辑

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

https://v2ex.ih06.com/t/1178331

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

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

© 2021 V2EX