分支 merge 了很多次,怎么从里面挑选出我自己的 commit? - V2EX
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 2534 views
    This topic created in 1324 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     1021 Online   Highest 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 42ms UTC 22:09 PVG 06:09 LAX 15:09 JFK 18:09
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86