最近我无意中注意到同事代码时 commit message 写的是“1”、“111”、“。。。。”这种无意义的 message,就是下面这种:
进而联想到,我们在开发时,commit message 是不是写的详细一点比较好?
1 AoEiuV020 2021-08-06 10:00:44 +08:00 ![]() 不说多详细,起码要有一行文字看完大概知道这个 commit 是做了什么, |
![]() | 2 Tianao 2021-08-06 10:01:43 +08:00 废话,肯定是要详细。这种写也可能是 commit 粒度太细了,没有耐心写。 |
![]() | 3 zinete 2021-08-06 10:05:14 +08:00 git hooks 整个代码提交规范 |
![]() | 4 Morriaty 2021-08-06 10:06:18 +08:00 ![]() 一些大的开源类 repo 有个标准的 commit 规范,https://www.conventionalcommits.org/en/v1.0.0/,不过说实话,一般公司里很难遵守 |
![]() | 5 Kusoku 2021-08-06 10:06:45 +08:00 ![]() 不用很详细,但是需要清晰和一定概括性,详细的信息应该附在代码中作为注释 |
![]() | 6 Shook 2021-08-06 10:07:21 +8:00 ![]() 起码要说一下这个 commit 是做什么的吧 |
![]() | 7 huangmingyou 2021-08-06 10:07:47 +08:00 ![]() 理论上肯定要写清楚,并且作为开发规范。 |
8 q2551430130 2021-08-06 10:08:10 +08:00 当然 |
9 deplivesb 2021-08-06 10:11:35 +08:00 也不能是 800 字的作文吧,但至少要让别人能知道你这是这个 commit 干了啥 |
10 zhangchongjie 2021-08-06 10:13:41 +08:00 ![]() 这是基本的东西吧,每一次提交的大概变动,先不说为了团队,自己以后 debug 的时候也好看,回滚方便 |
![]() | 11 yolee599 2021-08-06 10:18:18 +08:00 ![]() 我一般都是建好仓库后建一个模板文件:.gitmessage,然后执行 git config commit.template .gitmessage,之后提交的时候执行 git commit 就会自动引用模板,在相应的位置填写信息就可以了,禁止使用 git commit -m 。模板参照这个: https://github.com/angular/angular/blob/master/CONTRIBUTING.md |
![]() | 13 ch2 2021-08-06 10:26:19 +08:00 一句话说清楚 |
14 chengxynds 2021-08-06 10:38:47 +08:00 知道干了啥就行 业务+动作 |
15 xwayway 2021-08-06 10:42:30 +08:00 我们 commit message 有需求的一般需要贴上 jira 链接,然后大致写下实现了什么。如果是修改 bug,要说下改动点,影响范围什么的 |
![]() | 16 gowk 2021-08-06 10:47:01 +08:00 |
![]() | 18 whorusq 2021-08-06 11:03:25 +08:00 [bug 号|需求号|其它] 模块名 > 功能名:然后简单描述本次提交做了什么工作 我们一般这么写,仅供参考 |
![]() | 19 1daydayde 2021-08-06 11:28:13 +08:00 看一下 linux 的提交记录,详细到飞起 |
![]() | 20 violetlai 2021-08-06 11:45:44 +08:00 IDE 基本都有 git commite template 插件吧 照着模版填就好了 |
![]() | 21 jdhao 2021-08-06 11:49:54 +08:00 via Android 不说要写的超级详细,起码写一下做了什么更改,为啥更改。 不写 commit 信息的都是草台班子 |
22 auh 2021-08-06 11:56:22 +08:00 提交文本。一般就是,新增,修复,重构开头。然后,简单,描述一下涉及的业务功能,架构功能,修复的 bug 。等。大概知道干啥了就行。文字不要超过 20 个字。超过部分,可以作为详细解析,比如想要分享一下自己是如何思考和解决的。相当于一个详细解释。供大家没事干的时候欣赏。哈哈哈 |
![]() | 23 locoz 2021-08-06 12:07:59 +08:00 via Android ![]() 大致做了啥总得用一句话描述一下吧…这 111 是真离谱,测试的时候这么搞一下还行,后面强制提交覆盖掉或者直接在另一个分支上搞都没啥影响,主要内容还这么搞就是单纯的不负责任了。 |
![]() | 24 zenwong 2021-08-06 12:54:14 +08:00 git cz |
25 maninfog 2021-08-06 12:55:36 +08:00 via iPhone ![]() 你这个同事有点离谱 |
![]() | 26 ysicing 2021-08-06 13:03:06 +08:00 详细点好,可以试试 @mritd 大佬写的工具 https://github.com/mritd/gitflow-toolkit |
![]() | 27 monospace 2021-08-06 13:03:36 +08:00 ![]() 在我的团队要是有人写这种毫无意义的 commit message 的话,直接滚蛋! |
![]() | 28 mritd 2021-08-06 13:06:16 +08:00 @ysicing #26 还有点小 bug,终端提示有时候按快了就会没一行... 虽然不影响使用但是挺烦的,现在也没找到啥好用的终端库 |
![]() | 29 codehz 2021-08-06 13:07:29 +08:00 建议本地随意写,push 之前 rebase 一下再修改,避免无意义的 commit 和反复的修改。。 |
30 jonathanchoo 2021-08-06 13:53:34 +08:00 自己分支无所谓吧,提 mr 的时候描述详细一点,然后压缩一下提交记录 |
![]() | 31 passerbytiny 2021-08-06 14:04:57 +08:00 via Android ![]() git commit message 是有通用约定的(当然这是国际而非国内开发届的约定)的最小规范的:第一行写不超过 80 个字符宽度的标题,空一行从第三行开始写详细或附加内容,后者是可选的。至于具体怎么写,就没限制了,说人话就行。 至于“1”、“111”、这样的提交信息,只有刚从 SVN 或者其他 VCS 转过来的新手才会提交,而允许这种提交信息存在的团队也必然是新手团队成熟的团队这种提交压根不会被合并到主分支。 |
![]() | 32 noqwerty 2021-08-06 14:10:39 +08:00 via Android 直接全局用 commitizen |
![]() | 33 baiyi 2021-08-06 14:13:47 +08:00 最好是一行就能概括,这说明这个 commit 只做了一件事。如果有补充说明,可以换行写长篇的补充,这样的好处是在概览的时候,只看到有用的概括信息,然后详细的信息在 commit message 中也能看到。 |
![]() | 34 erwin985211 2021-08-06 14:14:39 +08:00 别说别人最起码自己能知道这次改了啥。 |
![]() | 35 ThanksSirAlex 2021-08-06 14:27:03 +08:00 开源项目写详细一点,公司内部无所谓了,反正没人看 |
![]() | 36 ckdxc 2021-08-06 14:28:13 +08:00 @codehz 我一直都是 用的那个 interactive rebase 那个, 但是万一操作的是 公共分支, 然后 push -f 好危险, 有啥办法安全操作不, 我都是 rebase | push -f 自己的分支 |
![]() | 37 boris93 2021-08-06 14:31:07 +08:00 via iPhone 第一行作为标题,一句话概括干了啥 空一行,第三行开始可以写详细的描述,非必需 |
38 xz410236056 2021-08-06 14:33:06 +08:00 哪怕什么都不写呢。。。这 1111 是什么鬼 |
![]() | 40 weiwenhao 2021-08-06 14:41:31 +08:00 ![]() git commit -m 'feat(工单 /功能 /可选): xxx' # 功能迭代 git commit -m 'fix: xxx' # bug 修复 git commit -m 'refactor: xxx' # 重构 git commit -m 'chore: xxx' # 杂事 https://www.ruanyifeng.com/blog/2016/01/commit_message_change_log.html 我现在就遵守这个,每一行 commit 都认真写, 至于其他人怎么写我就不管了。 |
![]() | 41 clockwork1122 2021-08-06 14:49:48 +08:00 @yolee599 我马一下 |
![]() | 42 pkoukk 2021-08-06 14:55:06 +08:00 自己开发的时候瞎写,merge 进 master 之前 suqash,然后才会好好写。 commit 就是个 crtl+s,不能每次都写一大段吧 |
![]() | 43 PinkStarrySky 2021-08-06 15:02:15 +08:00 写清楚点方便你自己看. |
![]() | 44 Sain 2021-08-06 15:23:36 +08:00 一个功能一次 commit,merge 之前 suqash 写 |
![]() | 45 no1xsyzy 2021-08-06 15:31:16 +08:00 {feat,fix,refactor,style}(模块): xxx 实在想写不说不爽的时候再空一行添加更多文字 如果在一个 commit 内存在多种更改,则「首行」的定义可以宽限到多行。 @passerbytiny JB 家的约定是首行 120 字( |
![]() | 46 no1xsyzy 2021-08-06 15:33:15 +08:00 不过我考虑了一下,commit msg 应当服务于 rebase -i 和 cherry pick,可以直接看出到底干了啥。 |
47 iiqiu 2021-08-06 15:37:44 +08:00 你去看看 github 看看排名前几的提交不就知道了 |
![]() | 48 suotm 2021-08-06 15:38:31 +08:00 111 就太离谱了! |
![]() | 49 wolfie 2021-08-06 15:40:57 +08:00 ![]() 之前有同事 自己开发一个项目时候 就这么提交。 后来改代码,经常跨模块改串了,后来回滚都不知道怎么回滚。 bug 指数级增长。 |
![]() | 50 www5070504 2021-08-06 16:00:40 +08:00 这种不好好写 commit 信息的 早晚有一天恶心到自己或者恶心到别人 |
![]() | 51 kafkaonsea 2021-08-06 16:03:56 +08:00 小公司只能靠自觉共识约束了 大公司可以搞 CI 流水线,不符合格式规范的 git commit,流水线失败,不允许合入 master |
![]() | 52 rekulas 2021-08-06 16:08:47 +08:00 之前在外企呆过,都是规范格式,描述有误被打回 pr 的大有人在,现在养成了习惯尽可能一句话描述清楚改动 养成这习惯很有好处,有一次调试一个 bug 追踪到了 4 年前,根据详细的 commit 描述 1 小时就定位到了,如果 msg 乱写我估计 1 天都未必能找到 |
![]() | 53 hzz2 2021-08-06 16:25:36 +08:00 leader 管起来 制定规范 https://segmentfault.com/a/1190000009048911 |
54 QHKZ 2021-08-06 16:42:16 +08:00 ![]() 我写这段代码的时候,只有上帝和我知道。现在,只有上帝知道了。 commit 的作用是不用去看代码,也能知道代码发生了什么变动。 贴一段 linux 内核的最新 commit: https://github.com/torvalds/linux/commit/e04480920d1eec9c061841399aa6f35b6f987d8b ----- Bluetooth: defer cleanup of resources in hci_unregister_dev() syzbot is hitting might_sleep() warning at hci_sock_dev_event() due to calling lock_sock() with rw spinlock held [1]. It seems that history of this locking problem is a trial and error. Commit b40df57 ("[PATCH] bluetooth: fix socket locking in hci_sock_dev_event()") in 2.6.21-rc4 changed bh_lock_sock() to lock_sock() as an attempt to fix lockdep warning. Then, commit 4ce61d1 ("[BLUETOOTH]: Fix locking in hci_sock_dev_event().") in 2.6.22-rc2 changed lock_sock() to local_bh_disable() + bh_lock_sock_nested() as an attempt to fix the sleep in atomic context warning. Then, commit 4b5dd69 ("Bluetooth: Remove local_bh_disable() from hci_sock.c") in 3.3-rc1 removed local_bh_disable(). Then, commit e305509 ("Bluetooth: use correct lock to prevent UAF of hdev object") in 5.13-rc5 again changed bh_lock_sock_nested() to lock_sock() as an attempt to fix CVE-2021-3573. This difficulty comes from current implementation that hci_sock_dev_event(HCI_DEV_UNREG) is responsible for dropping all references from sockets because hci_unregister_dev() immediately reclaims resources as soon as returning from hci_sock_dev_event(HCI_DEV_UNREG). But the history suggests that hci_sock_dev_event(HCI_DEV_UNREG) was not doing what it should do. Therefore, instead of trying to detach sockets from device, let's accept not detaching sockets from device at hci_sock_dev_event(HCI_DEV_UNREG), by moving actual cleanup of resources from hci_unregister_dev() to hci_cleanup_dev() which is called by bt_host_release() when all references to this unregistered device (which is a kobject) are gone. Since hci_sock_dev_event(HCI_DEV_UNREG) no longer resets hci_pi(sk)->hdev, we need to check whether this device was unregistered and return an error based on HCI_UNREGISTER flag. There might be subtle behavioral difference in "monitor the hdev" functionality; please report if you found something went wrong due to this patch. Link: https://syzkaller.appspot.com/bug?extid=a5df189917e79d5e59c9 [1] Reported-by: syzbot <[email protected]> Suggested-by: Linus Torvalds <torvalds@linux-foundation.org> Signed-off-by: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp> Fixes: e305509 ("Bluetooth: use correct lock to prevent UAF of hdev object") Acked-by: Luiz Augusto von Dentz <[email protected]> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org> master @torvalds Tetsuo Handa authored and torvalds committed 13 hours ago 1 parent 0b53abf commit e04480920d1eec9c061841399aa6f35b6f987d8b |
55 echoechoin 2021-08-06 17:00:46 +08:00 我们公司是 添加一个 hook 限制一下字数 |
![]() | 56 chjieza 2021-08-06 17:17:13 +08:00 上 husky,在 git 钩子加验证就完了,对应 jira 的 feat 或者 fix |
![]() | 57 ErenJaeger 2021-08-06 18:18:03 +08:00 卧槽,写这 111 不得被打一顿? 我看约定俗成的规范是 type: title blank line body |
![]() | 58 jaredyam 2021-08-06 20:46:16 +08:00 和写 docstring 差不多。最好先用较少的字符进行内容梗概,也即比较短的一行。如果觉得有需要详细说明的地方,隔一行,再另起一行,详细说明。如: ------------------------------ 这是常见的 commit 写法 我要开始详细说明了…… |
![]() | 59 hallDrawnel 2021-08-06 21:37:43 +08:00 1111 这不得打一顿?后面的人看了全不知道你干了啥呀。我们对 mater 的所有合并都会发通知到开发群里,群里所有人都能看见你在 commit message 上写了啥。commit message 要求用 commitizen 。 |
60 Huelse 2021-08-06 21:51:17 +08:00 你同事这个过分了,好歹说一下干了啥,中文写都可以 |
![]() | 61 JerryCha 2021-08-06 22:40:17 +08:00 我们跟包了一层 Jira 的系统关联的,不带上编号不能推送到 remote 仓库 |
![]() | 62 jiyinyiyong 2021-08-06 23:04:59 +08:00 ![]() leader: 来, 我看看你们这周都干了什么. 你: 我给项目 AAA 加了一个菜单, 对接了后端的 BBB 功能, 然后在 Webpack 配置做了一些优化, 编译时间少了 2.2s 多一点. leader: 打的不错, 继续努力. (转过头) 那你呢? 你同事: 我 "1" 了一下, 然后 "111" 了一下. leader: 说人话! 你同事: "。。。。" leader: 你礼貌吗? 难道要我一行一行去代码里看你都搞了什么! |
63 ztcaoll222 2021-08-07 01:19:14 +08:00 commit 基本一句话,但是 pr 会写得详细一点 |
![]() | 64 molvqingtai 2021-08-07 02:43:52 +08:00 via Android 你需要 commitlint |
65 crclz 2021-08-07 09:35:41 +08:00 commit message 至少要能够保证:你自己过一周看到 commit message 的时候能知道这个 commit 里面干了什么。 |
![]() | 66 villivateur 2021-08-07 09:49:31 +08:00 via Android 你这同事要是跟我合作我要把他喷死 |
![]() | 67 AmaQuinton 2021-08-07 11:26:54 +08:00 写清楚一些,会省好多事 |
![]() | 68 matrix67 2021-08-07 14:15:11 +08:00 @xz410236056 #38 这个人肯定经常组队打游戏,打 1 这个习惯应该是大多数魔兽世界玩家的通病。以前打团没有现在这些插件检查,准备就绪这些都是,团长都是听到的打 1,没到的打 1 。久而久之打 1 就演变成我知道了,明白这个意思哦了。 打开英雄联盟好友发来:1 ?(打吗) 你:1 (打) 选好位置:1 ?(还有人吗?开吗?) 你:1 (没人了开) 高层选人:1 ?(要一抢吗?) 四楼:豹女你:1 (收到) 选人:1 ?(锁吗) 四楼:1 (锁) 开始游戏了:1 ?(一级团吗) 狂野女猎手:饰品守卫(不团做眼) 狂野女猎手正在路上:1 ?(能抓?) 沙漠死神标记此处危险(不能) 疾风剑豪请求协助:1 ?(来帮) 曙光女神正在路上(来了) 狂野女猎手请求协助:1 ?(来龙?) 暗夜猎手正在路上(搞起) 狂野女猎手示意撤离:1 (足够了谢谢) 暗夜猎手表情点赞:1 (不客气这是我该做的) |
![]() | 69 polyang OP @villivateur 哈哈,没必要吧 |
![]() | 70 cwek 2021-08-07 19:09:28 +08:00 有可能临时的 commit,然后提交时没 rebase 压缩重写 commit 。 |
71 NetCobra 2021-08-08 03:58:35 +08:00 写这种提交信息的基本上都不明白为什么代码要有个提交的操作。 |
![]() | 72 Cu635 2021-08-16 15:55:51 +08:00 这种同事趁早开除,未来的屎山就是它们贡献的。 |
![]() | 73 Zeeland4v 347 天前 https://github.com/undertone0809/gcop 可以看看这个项目,用 ai 更加轻松地撰写优质的 git commit 。 |