likes
comments
collection
share

GIT的7个最佳实践(译)

作者站长头像
站长
· 阅读数 4

原文:7 Git Best Practices to Start Using in Your Next Commit

作者:Weverton Timoteo

每个软件都有最佳实践。Git也不例外。在去年(2019)它成为被应用最多的版本控制软件。很多公司冲着其特有的功能而采用Git。如果你想了解为什么Git如此强大,它有些其他版本控制系统所不具备的优势,如同颠覆:

  • 分布模式,提升了团队伙伴之间的合作效率。
  • 非常快速的产生分支以及历史版本变化的比较。
  • 非常方便且快速的创建分支和合并分支。

介于这些因素,Git是一个去中心化的工作模式,但它稍微有点复杂。然而,好的Git实践方法是让你了解其工作机理的关键。否则,很容易造成误解或搞的一团糟。

请留意,能力越大伴随着责任越大。这是为什么采用最佳实践是一个关键。这里有7个Git最佳实践可以让你在接下来的工作中尝试。

  1. 不要直接git pushmaster,先创建分支。

去中心化的关键功能之一是快速创建分支。将代码直接推送到master分支在某些方面有碍于相互合作。Git可以非常方便地比对两个不同的分支,这样可以促进有效的讨论、改进代码质量并且共享开发者之间的经验长处。这个实践叫做“代码回顾”(Code Review)。

创建一个分支,git branch -b <branch_name>。命令 git branch -a会列出所有可用的分支,用命令git checkout <branch_name>切换到指定分支。这里有个小技巧,用git checkout -命令可以快速换回之前的分支。

  1. 充分地配置提交作者信息

你应该至少正确地设置你的名字和邮件地址。再将代码提交作为视作为沟通工具,了解谁做出了某些具体的修改可以在未来帮到你。

git blame <file_name> 可以一行行的显示:

  • 最后一次变更的提交
  • 提交的作者
  • 提交的日期

但不要用这个功能去甩锅,这并不能解决问题。因此,你可以围绕相关的代码咨询该开发者相关的业务背景抑或是技术上的目的。这也许可以更快的修正错误,或者从代码库中追踪出现问题的那次提交。

  1. 认真地写每次提交的注释

正如先前所说,每次版本的提交就像一个沟通工具。所以,稍微花点时间将你所提交的代码的做一个概括性的总结。这样你自己和你的同事们都会感谢如此。

通过git log,你可以导航整个代码库的历史版本。这些记录犹如讲故事一样叙述整个开发过程。如果提交了一个模糊又抽象的信息,诸如“修复错误”或者“重构认证”给你带来的困扰会比你想的还要早。

  1. 一次只提交有关联的工作成果

你知道什么是“S”标准吗?嗯,就是单一职责法则(SRP)。你的每次提交可以应用这条原则,而不单单是针对代码。你应该提交一组有意义但又尽可能少的代码。

当细看或回顾代码库时这条实践原则会有所帮助,例如当使用git log或者git blame.

  1. 避免重写master的历史记录

Git的一个神奇的功能是可以改写日志历史。而且有很多种方法去实现,但是git rebase -i是一个我最常用的。例如用这条命令,可以切换提交的顺序,移除一个提交,合并两个或者更多的提交等等。

在打开一个拉去请求之前这特别实用。它允许开发者在做代码复盘前清理和重新组织混乱的提交。如果你遵循了上述的第3和4点,那么提交清单应该看上去更像是一个任务清单。它应该还原了你完成整个任务的过程,就像讲故事一样完成了最终的代码。

但是,将Git rebase在已经公开的分支上,例如master分支,那可能会在其他开发者的分支上造成很多冲突,如果经常进行rebase操作这将会浪费很多时间。

当你改写了历史记录,你需要用git push –force来强制推送代码。我经常要非常仔细确认目标分支,以避免造成灾难。这样避免重写到错误的目标分支历史中,然后又非常头疼地去恢复代码。虽然可以在本地分支上可以较为随意的操作,但避免在公开的分支上这样操作。

  1. 经常Rebase你的工作分支

用最新的代码来rebase你的分支是非常关键的。在废弃的代码上写新的代码是没意义的。这就像在已经修复的问题上再次修复同样的问题。

你应该经常rebase的你所在的分支上,以避免发生问题、返工还有无休止地处理上游分枝的冲突上。用以下命令可以放让事情变得简单:

  • git checkout <upstream_branch>
  • git pull
  • git checkout -
  • git rebase <upstream_branch>

一个炫酷的技巧git fetch –prune。它不需要你确认签出上游分支来更新。大爱。

  1. 学习使用工具,不要回避。

正如我说的,git很强大。它有大量的命令。通过了解git在线文档或者用man命令来学习这些技巧。用命令git help -a来看看其中最有用的命令。

以下是我用的最多的:

  • git cherry-pick
  • git diffgit apply
  • git stash
  • git bisect

最后思考

以上清单中7个git最佳实践并不是权威的。不过,我认为它已经很全面,且不一定要除了你以外的其他人去非得去采用它们。你马上可以在你下一个提交中就应用起来。

我希望你能有所收获。感谢。

译者感受

当我看完这篇博客后,发现跟我的想法重合度非常高,而且原作者对分支对管理要求更高。我一直在跟团队强调每次提交一定要好好写归纳总结,就如同一个留言板,不单单是跟团队中其他人的一个沟通渠道,更是一个跨越时间维度,跟另外一个“自己”沟通的渠道。当发生问题或者研究某个业务背景时,可以节约相当的时间。