V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
git
Pro Git
Atlassian Git Tutorial
Pro Git 简体中文翻译
GitX
zhongjun96
V2EX  ›  git

git 如何在合并提交的同时还保留 Author 信息?

  •  
  •   zhongjun96 · 2023-09-07 12:17:31 +08:00 · 2100 次点击
    这是一个创建于 448 天前的主题,其中的信息可能已经有所发展或是发生改变。

    一个需求,多人一起在 dev 开发 。
    有大量无意义 commit 信息。希望合并到 master 只有一个 commit 。
    使用压缩提交的话,所有代码的 Author 都变成了同一个人。
    有什么办法既压缩多个 commit 成一个,并且还能保留 Author 信息?

    14 条回复    2023-09-08 09:03:31 +08:00
    Goooler
        1
    Goooler  
       2023-09-07 13:00:53 +08:00 via Android   ❤️ 3
    Co-authored-by:
    fw1314
        2
    fw1314  
       2023-09-07 13:15:39 +08:00
    squash 的时候就像一楼说的那样就可以了
    gyt95
        3
    gyt95  
       2023-09-07 13:18:33 +08:00
    如果是线上码云、github 那怎么设置
    zhongjun96
        4
    zhongjun96  
    OP
       2023-09-07 14:10:37 +08:00
    @Goooler #1
    @fw1314 #2
    用 gitea 的 '创建压缩提交 '。

    提交后查看有 'Co-authored-by:' 信息,但是在 `master` 分支用户信息还是变了。


    在 Dev 分支,能看到两个用户信息。


    压缩提交到 Master , 查看用户变成了一个,时间也变成了今天。
    Goooler
        5
    Goooler  
       2023-09-07 15:20:03 +08:00   ❤️ 1
    IDEA 里面显示的是第一作者,共同作者在提交信息或者 github 网页上可以看到
    zjp
        6
    zjp  
       2023-09-07 15:59:17 +08:00 via Android
    git 自身就不支持多个提交人
    pagxir
        7
    pagxir  
       2023-09-07 16:08:37 +08:00 via Android
    这操作没啥意义吧。既然不是同一个人写,就不是同一个问题,遵循一个问题一个 patch 原则那就不要塞一起。既然塞一起就说明不在乎这个 author 了。
    yin1999
        8
    yin1999  
       2023-09-07 16:10:05 +08:00
    @gyt95 不清楚码云的,GitHub 的 UI 会在使用 squash and merge 的时候自动帮你生成 Co-authored-by 信息
    unco020511
        9
    unco020511  
       2023-09-07 16:46:59 +08:00
    在 squash 的 commit msg 里带上原作者
    rainbowhu
        10
    rainbowhu  
       2023-09-07 18:12:55 +08:00
    如果你想不用 Co-authored-by ,那就`git rebase -i origin/master`,然后手动把各自的修改,单独各合成 1 个 commit 。

    也就是两个人会有两个 commit ,三个人会有三个 commit 。不过可能牵扯到调整 commit 顺序,处理冲突之类的,还挺麻烦的。

    rebase 还有个问题就是,如果里面新修改里有 merge commit ,会比较麻烦。

    虽然会多几个 commit ,但是 rebase 后的提交历史也是很整洁的。

    简单点,就是 git squash ,然后 commit 信息里添加 Co-authored-by 了。
    rainbowhu
        11
    rainbowhu  
       2023-09-07 18:15:30 +08:00
    @rainbowhu git squash 打错了,应该是指 git merge --squash
    zhongjun96
        12
    zhongjun96  
    OP
       2023-09-07 19:07:41 +08:00
    @pagxir #7 因为分支没有拆分到那么细。按照需求拆的。一个需求涉及多个模块,不同模块负责人不同。就导致看起来是一个功能,多个人在开发。
    fw1314
        13
    fw1314  
       2023-09-07 23:25:41 +08:00 via iPhone
    @zhongjun96
    gitea 的话我不清楚,但是 GitHub 是可以的,你可以看看 8 楼说的,其实就是加多个受理人
    zhongjun96
        14
    zhongjun96  
    OP
       2023-09-08 09:03:31 +08:00
    @fw1314 #13 看了下,是#5 说的原因。在 gitea 网页上也能看到多个作者,idea 里就只能看到第一个。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5030 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 09:48 · PVG 17:48 · LAX 01:48 · JFK 04:48
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.