1
bluesky139 2022-05-15 21:01:17 +08:00 via Android
你把它想象成就是 merge 单条提交就对了,不一样的地方肯定会冲突。
|
2
linuxsteam OP @bluesky139 唉,关键有次提交是 cherry-pick 过去的。少过去一部分代码。不知道为啥 git 会把有些代码忽略掉
|
3
bluesky139 2022-05-15 22:22:56 +08:00 via Android
我觉得不大可能是忽略,你可以到之前那里 branch 一个分支出来,再 cherry-pick 一次,重现一下当时的情况,再仔细观察下。
|
4
statumer 2022-05-15 22:38:00 +08:00 via iPhone
有个东西叫 format-patch ,可以把你要 cherry-pick 的 commit 转换为 patch ,看看 patch 里面有什么东西。
|
5
linuxsteam OP @bluesky139 也许吧。。希望可以复现。同事是通过 gerrit ,进行 cherry-pick 的。
|
6
monetto 2022-05-16 09:51:08 +08:00
cherry-pick 相当于是 将 某一分支的 commit 代码中的变更点,单独提取出来,当作一次 “重写”,并加入到当前分支。
如果对应的 Commit 中修改的代码,在当前分支中不存在,则会冲突。 如果当前分支已经包含部分修改过的代码(即使代码一摸一样,但是不属于一个 Commit ),也会造成冲突。 建议下载一个 IDEA 社区版(开源免费),使用里面的 Git 工具进行操作,会简单舒服很多。 |
7
zmal 2022-05-16 10:35:18 +08:00
@linuxsteam 确实不可能 cherry-pick 后忽略...不要信任同事,自己再操作一遍试试。
|
8
linuxsteam OP @monetto
> 如果当前分支已经包含部分修改过的代码(即使代码一摸一样,但是不属于一个 Commit ),也会造成冲突。 我现在遇到了 代码不属于同一个 commit ,但是成功合并变更点。没有提示冲突。。自己建立个仓库没模拟出来😭 |
9
monetto 2022-05-18 09:55:44 +08:00
@linuxsteam emm ,这样呢。
分支 A ,在某个文件上,加入一行 “123”,创建 CommitA 。 分支 B ,在某个文件上,加入一行 “123”,创建 CommitB 。 这时候 切换到 分支 B ,对 CommitA 进行 charry-pick 。 |
10
monetto 2022-05-18 09:58:05 +08:00
不过话说,频繁使用 Cherry-Pick 的场景是什么呢,Cherry-Pick 对 Git 树是有一定破坏性的。能 Merge 最好还是 Merge 。
以前公司使用 Cherry-Pick 是因为 test 分支和 master 分支代码差别太大了,不能使用 Merge 。该进行改造,抽取配置文件,但是没人做。项目太大了,也不方便做这些了。 |
11
linuxsteam OP @monetto #9 这样会冲突吧
我们这里用分支当不同客户的版本,会总用 cherry-pick 。不是只有一个生产分支😂 |