分支 merge 了很多次,怎么从里面挑选出我自己的 commit?

2022-09-13 20:51:18 +08:00
 itskingname

我们有 10 个人进行开发。所有人都基于同一个基础分支 master 拉出各自的分支,开发自己的功能,然后合并到 dev 分支。

dev 是一个测试分支,QA 测试的时候会基于它进行测试。我由于是项目对接人,有时候会 QA 报了简单的错误,我就直接在 dev 上面修改。

线上分支是 online 。上面有很多人的 hotfix (包括我们这 10 个人)。我每过一段时间,会把 online 分支的代码 merge 进 dev 。

这样进行了 2 个月以后,dev 分支已经很乱了。

我想把所有我直接在 dev 分支上面的修改单独找出来。应该怎么操作呢?不能直接看 commit log ,因为里面 merge online 分支以后,也有我的提交。但我只需要直接在 dev 分支直接修改的提交。

1918 次点击
所在节点    git
13 条回复
rekulas
2022-09-13 21:05:09 +08:00
你们提交 commit 连 author 不指定么?另外任何时候都应该避免直接修改 git 仓库

如果其他人都是 merge 进去的话可以考虑把 log 拉出来,merge 的点和 merge 关联的 commit 都排除,剩下的就是你的
itskingname
2022-09-13 21:19:28 +08:00
@rekulas 因为合并 online 的时候,也有我的代码。
jfcherng
2022-09-13 23:04:55 +08:00
或許 git log --first-parent --no-merges --author=MY_EMAIL@EXAMPLE.COM
FranzKafka95
2022-09-14 06:52:59 +08:00
git 有命令可以筛选特定 commiter 的提交
Dganzh
2022-09-14 09:23:34 +08:00
先用 git log --author=xxx 查看自己的 commit hash, 然后 git cherry-pick hash1 hash2...
Dganzh
2022-09-14 09:29:01 +08:00
nothingistrue
2022-09-14 09:37:23 +08:00
master 出的分支、dev 分支自身的修改、online 分支这几个来源,对于 dev 分支都是一样的合并来源(直接修改相当于合并本地 dve 分支到远程 dev 分支),所以你就别要想单纯靠 git 来区分这些来源了。

其实按照你们这种开发过程,dev 分支 跟 master 分支当中必有一个是没用的分支。
penll
2022-09-14 09:53:35 +08:00
用 sourcetree 那个提交线路图非常易懂,容易看到自己的提交和合并路径
itskingname
2022-09-14 11:14:20 +08:00
@jfcherng 这个方法好,感谢、
itskingname
2022-09-14 11:15:08 +08:00
@Dganzh 有个问题。就是里面有些提交,是基于别人最新 merge 的代码进行修改的。如果单纯 pick 出我自己的 commit ,有几个修改就会缺东西。
lihengyu
2022-09-14 11:52:07 +08:00
compare 一下 dev 和 online 分支,能够找出只存在于 dev 但不存在于 online 的提交,然后再在这些提交里找到你自己的提交。
Hug125
2022-09-14 19:57:18 +08:00
建议 OP 之后定期重置 dev 分支,基于 online 分支重新拉一个 dev 出来,再把开发中的分支合并一遍,这样 git 树比较清晰整洁。
itskingname
2022-09-15 10:27:00 +08:00
@lihengyu 问题是 我在 dev 上面的一些提交,是基于 merge online 后的代码进行修改的。如果只把 dev 有的提交拉出来,pick 的时候会出问题吧。

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

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

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

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

© 2021 V2EX