我们有 10 个人进行开发。所有人都基于同一个基础分支 master 拉出各自的分支,开发自己的功能,然后合并到 dev 分支。
dev 是一个测试分支,QA 测试的时候会基于它进行测试。我由于是项目对接人,有时候会 QA 报了简单的错误,我就直接在 dev 上面修改。
线上分支是 online 。上面有很多人的 hotfix (包括我们这 10 个人)。我每过一段时间,会把 online 分支的代码 merge 进 dev 。
这样进行了 2 个月以后,dev 分支已经很乱了。
我想把所有我直接在 dev 分支上面的修改单独找出来。应该怎么操作呢?不能直接看 commit log ,因为里面 merge online 分支以后,也有我的提交。但我只需要直接在 dev 分支直接修改的提交。
1
rekulas 2022-09-13 21:05:09 +08:00
你们提交 commit 连 author 不指定么?另外任何时候都应该避免直接修改 git 仓库
如果其他人都是 merge 进去的话可以考虑把 log 拉出来,merge 的点和 merge 关联的 commit 都排除,剩下的就是你的 |
2
itskingname OP @rekulas 因为合并 online 的时候,也有我的代码。
|
3
jfcherng 2022-09-13 23:04:55 +08:00
或許 git log --first-parent --no-merges [email protected]
|
4
FranzKafka95 2022-09-14 06:52:59 +08:00 via Android
git 有命令可以筛选特定 commiter 的提交
|
5
Dganzh 2022-09-14 09:23:34 +08:00
先用 git log --author=xxx 查看自己的 commit hash, 然后 git cherry-pick hash1 hash2...
|
6
Dganzh 2022-09-14 09:29:01 +08:00
|
7
nothingistrue 2022-09-14 09:37:23 +08:00
master 出的分支、dev 分支自身的修改、online 分支这几个来源,对于 dev 分支都是一样的合并来源(直接修改相当于合并本地 dve 分支到远程 dev 分支),所以你就别要想单纯靠 git 来区分这些来源了。
其实按照你们这种开发过程,dev 分支 跟 master 分支当中必有一个是没用的分支。 |
8
penll 2022-09-14 09:53:35 +08:00 1
用 sourcetree 那个提交线路图非常易懂,容易看到自己的提交和合并路径
|
9
itskingname OP @jfcherng 这个方法好,感谢、
|
10
itskingname OP @Dganzh 有个问题。就是里面有些提交,是基于别人最新 merge 的代码进行修改的。如果单纯 pick 出我自己的 commit ,有几个修改就会缺东西。
|
11
lihengyu 2022-09-14 11:52:07 +08:00
compare 一下 dev 和 online 分支,能够找出只存在于 dev 但不存在于 online 的提交,然后再在这些提交里找到你自己的提交。
|
12
Hug125 2022-09-14 19:57:18 +08:00 via iPhone
建议 OP 之后定期重置 dev 分支,基于 online 分支重新拉一个 dev 出来,再把开发中的分支合并一遍,这样 git 树比较清晰整洁。
|
13
itskingname OP @lihengyu 问题是 我在 dev 上面的一些提交,是基于 merge online 后的代码进行修改的。如果只把 dev 有的提交拉出来,pick 的时候会出问题吧。
|