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

2023-09-07 12:17:31 +08:00
 zhongjun96

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

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

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


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


压缩提交到 Master , 查看用户变成了一个,时间也变成了今天。
Goooler
2023-09-07 15:20:03 +08:00
IDEA 里面显示的是第一作者,共同作者在提交信息或者 github 网页上可以看到
zjp
2023-09-07 15:59:17 +08:00
git 自身就不支持多个提交人
pagxir
2023-09-07 16:08:37 +08:00
这操作没啥意义吧。既然不是同一个人写,就不是同一个问题,遵循一个问题一个 patch 原则那就不要塞一起。既然塞一起就说明不在乎这个 author 了。
yin1999
2023-09-07 16:10:05 +08:00
@gyt95 不清楚码云的,GitHub 的 UI 会在使用 squash and merge 的时候自动帮你生成 Co-authored-by 信息
unco020511
2023-09-07 16:46:59 +08:00
在 squash 的 commit msg 里带上原作者
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
2023-09-07 18:15:30 +08:00
@rainbowhu git squash 打错了,应该是指 git merge --squash
zhongjun96
2023-09-07 19:07:41 +08:00
@pagxir #7 因为分支没有拆分到那么细。按照需求拆的。一个需求涉及多个模块,不同模块负责人不同。就导致看起来是一个功能,多个人在开发。
fw1314
2023-09-07 23:25:41 +08:00
@zhongjun96
gitea 的话我不清楚,但是 GitHub 是可以的,你可以看看 8 楼说的,其实就是加多个受理人
zhongjun96
2023-09-08 09:03:31 +08:00
@fw1314 #13 看了下,是#5 说的原因。在 gitea 网页上也能看到多个作者,idea 里就只能看到第一个。

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

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

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

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

© 2021 V2EX