前言
如果要学习进阶路线和指南,建议先看这篇文章:Git 成长之路:新手到进阶的实用指南 - 掘金 (juejin.cn) 。
本文主要针对一些 Git 使用的要点做总结概述,保持碎片化学习,茶余饭后也来点小知识,不仅提升自己的技能,还能更好地理解和应用在日常工作和项目中。
正文
1. 始终先拉取最新代码
注意这里的“先”,顺序很重要。
在开始新的工作或合并更改之前,使用git pull。确保你有最新的代码。
2. 避免在master或main分支上直接工作
以前只有master分支,后来因为一些特殊的原因,部分平台的master分支名称变成了main。
但是名称不影响其主分支的基础属性。
请使用git checkout -b new-feature创建一个新的分支来开发新功能。
3. 提交前检查差异
建议使用git diff查看您即将提交的更改。
4. 为每个提交编写清晰、有意义的提交消息
千万不要使用"fix bug"这种过于抽象的信息,而应该用"Refactor(ModuleA): Fix login issue when using OAuth"这种一眼就能看出做了什么的信息。
JetBrain用户可以尝试 Git Commit Template 插件,它会帮你结构化提交信息:
<type>(<scope>): <subject>
<BLANK LINE>
<body>
<BLANK LINE>
<footer>
5. 在一个提交中避免包含多个不相关的更改
如果修复了两个不同的问题,请创建两个不同的提交。
这主要是为了代码审查和排错,当出现问题时能够更轻松地追踪到。
6. 定期与远程存储库同步
使用git fetch和git pull定期获取远程的更新。
如果用IDE工具,比如 VSCode 或者 IDEA,建议开启自动 fetch 的功能。
7. 解决合并冲突时要小心
当git pull或git merge导致冲突时,务必仔细检查和解决每个冲突。
千万不要把代码搞丢了。
虽然搞丢了也有办法恢复,但毕竟耽误了功夫,能避免时则避免。
8. 不要强制推送
尽量不要使用git push -f,除非你确实知道自己在做什么。
这个命令可以强制推送更改,并且覆盖远程存储库的历史记录,可能会导致之前的提交被搞丢,而且会破坏提交历史的一致性,不利于记录追踪和问题排查。
一般来说还是建议合并和解决冲突后做正常地git push。
9. 保持提交历史清晰
避免不必要的合并提交,可以使用git rebase。
这可以使项目的历史记录更加清晰和易于理解,通俗的讲,可以让历史记录更干净,比如下面这样的线性记录:
10. 不要提交敏感信息
避免将密码、API密钥或其他敏感数据提交到 Git ,万一被不法之徒利用,后果不堪设想。
11. 善于使用.gitignore文件
将个人编辑器的配置、环境等与开发无关的文件/目录添加到.gitignore中,比如:
node_modules.vscode.idea.hbuilderx
等等等等
12. 定期创建备份
除了推送到远程存储库外,还可以定期备份您的Git存储库。
可能不少人觉得这多此一举,但是万一哪天 Git 托管平台有问题了,比如被监管、被墙?然后
两者结合,实现更全面的数据保护。
可以选择将备份存储在不同的本地位置,如外部硬盘驱动器、网络附加存储或其他服务器上。此外,使用云存储服务,如阿里云 OSS、腾讯云 COS、Amazon S3、Google Cloud Storage等。
13. 避免更改已发布的历史
一旦提交被推送到公共分支或公共存储库,避免使用git rebase或git push -f更改它。
git rebase 可以重新排列提交的顺序或修改提交的内容,这可能会导致其他团队成员或协作者的工作历史与您的不一致,造成混淆,而强制推送也可能会导致历史记录丢失或覆盖。
往严重了说,可能会引发冲突和团队合作问题。
正确的做法应该是创建新的提交来修改之前的问题,而不是尝试更改历史记录。
14. 使用标签标记重要的提交或里程碑
发布新版本时,使用git tag v1.0.0。
里程碑在项目管理中起着至关重要的作用,它有助于规划、监测和控制项目进展,围绕每个里程碑而展开的 Deadline、关键节点概念,有助于管控项目进度和目标,确保项目按时交付。
使用 tag 创建里程碑是个极好的选择。
同时也方便用户或团队成员更轻松地找到和下载特定版本的代码。
15. 在合并大的更改或新功能之前,进行代码审查
无论个人还是团队,代码审核都是一项重要实践,主要有以下好处:
- 保证代码质量: 代码审查有助于确保所提交的更改符合团队的编码标准和最佳实践,有助于提高代码的质量,减少潜在的错误和 bug。
- 发现问题: 这是代码审查最核心的作用,发现潜在的问题、漏洞或不一致性,早期发现并解决问题通常比在后期修复问题更加高效和经济。
- 学习: 通过审查他人的代码,可以学习不同的编码技巧和最佳实践,反思自己的代码,查漏补缺达到学习的目的。
- 风险管理: 这点和“发现问题”异曲同工,对于大型更改或新功能,代码审查可以帮助降低项目失败的风险,可以防止低质量的代码进入主分支,从而影响整个项目。
结合一些 Git 平台可以轻松实现代码审查,比如GitHub、GitLab、Bitbucket等。
结尾
继续保持学习的习惯,不断积累知识!
保持好奇心,持续探索新的领域,总有一天你会成为理想的自己。
愿世间美好与你环环相扣。