V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
git
Pro Git
Atlassian Git Tutorial
Pro Git 简体中文翻译
GitX
itskingname
V2EX  ›  git

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

  •  
  •   itskingname · Sep 13, 2022 · 2559 views
    This topic created in 1332 days ago, the information mentioned may be changed or developed.

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

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

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

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

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

    13 replies    2022-09-15 10:27:00 +08:00
    rekulas
        1
    rekulas  
       Sep 13, 2022
    你们提交 commit 连 author 不指定么?另外任何时候都应该避免直接修改 git 仓库

    如果其他人都是 merge 进去的话可以考虑把 log 拉出来,merge 的点和 merge 关联的 commit 都排除,剩下的就是你的
    itskingname
        2
    itskingname  
    OP
       Sep 13, 2022
    @rekulas 因为合并 online 的时候,也有我的代码。
    jfcherng
        3
    jfcherng  
       Sep 13, 2022
    或許 git log --first-parent --no-merges [email protected]
    FranzKafka95
        4
    FranzKafka95  
       Sep 14, 2022 via Android
    git 有命令可以筛选特定 commiter 的提交
    Dganzh
        5
    Dganzh  
       Sep 14, 2022
    先用 git log --author=xxx 查看自己的 commit hash, 然后 git cherry-pick hash1 hash2...
    nothingistrue
        7
    nothingistrue  
       Sep 14, 2022
    master 出的分支、dev 分支自身的修改、online 分支这几个来源,对于 dev 分支都是一样的合并来源(直接修改相当于合并本地 dve 分支到远程 dev 分支),所以你就别要想单纯靠 git 来区分这些来源了。

    其实按照你们这种开发过程,dev 分支 跟 master 分支当中必有一个是没用的分支。
    penll
        8
    penll  
       Sep 14, 2022   ❤️ 1
    用 sourcetree 那个提交线路图非常易懂,容易看到自己的提交和合并路径
    itskingname
        9
    itskingname  
    OP
       Sep 14, 2022
    @jfcherng 这个方法好,感谢、
    itskingname
        10
    itskingname  
    OP
       Sep 14, 2022
    @Dganzh 有个问题。就是里面有些提交,是基于别人最新 merge 的代码进行修改的。如果单纯 pick 出我自己的 commit ,有几个修改就会缺东西。
    maybe0410
        11
    maybe0410  
       Sep 14, 2022
    compare 一下 dev 和 online 分支,能够找出只存在于 dev 但不存在于 online 的提交,然后再在这些提交里找到你自己的提交。
    Hug125
        12
    Hug125  
       Sep 14, 2022 via iPhone
    建议 OP 之后定期重置 dev 分支,基于 online 分支重新拉一个 dev 出来,再把开发中的分支合并一遍,这样 git 树比较清晰整洁。
    itskingname
        13
    itskingname  
    OP
       Sep 15, 2022
    @lihengyu 问题是 我在 dev 上面的一些提交,是基于 merge online 后的代码进行修改的。如果只把 dev 有的提交拉出来,pick 的时候会出问题吧。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   1155 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 45ms · UTC 23:14 · PVG 07:14 · LAX 16:14 · JFK 19:14
    ♥ Do have faith in what you're doing.