Learn Version Control with Git
A step-by-step course for the complete beginner
Learn Version Control with Git featured image

版本控制的最佳实践

提交对映改动

一次提交要包括一个相关改动。例如,对于两个错误的修复应该进行两次不同的提交。精简的提交可以让其他的开发团队人员更简单地明白其改动的用义。如果其中一次提交的改动出现了问题,也可以方便地回滚到改动之前的状态。借助暂存功能来标记相关的改动文件,Git 可以为你打造出非常精准的提交。

频繁地提交改动

经常性地提交改动可以确保不会出现特别庞大的提交,同时也可以比较精准地对应到所需要的改动上。此外,通过频繁地提交也可以比较快速地和其他开发人员来共享你的改动。同样也会避免在整合代码时出现过多的合并冲突。相反的,非常庞大的提交会加大整合代码时出现冲突的风险,解决这些冲突也会非常复杂。

不要提交不完整的改动

虽然原则上来说不要提交一些还没有完成的改动,但是对于一个非常庞大的新功能来说,也并不意味着你必须整体完成这个功能后才可以提交。恰恰相反,你必须把那些改动正确地分割成一些有意义的逻辑模块来进行频繁地提交。如果你仅仅是因为急着想要下班,或者是想要得到一个干净的工作副本(比如想要切换到另一个分支上),你可以利用 Git 所提供的储藏(Stash)功能来解决这些问题。切记不要把那些不完整的改动提交到仓库中。

提交前测试那些改动

不要理所当然地认为自己完成的改动都是正确的。所有的改动一定要通过彻底地测试才表示它真正地被完成了。尽管这些改动可能仅仅是提交到了你的本地仓库中,只有你自己才能看到,但完整的测试同样是非常重要的,因为这些代码可能之后会被推送和共享到远程给其他的开发人员。

高质量的提交注释

提交注释的标题需要一个少于50个字符的简短说明。在一个空白的分割行之后要对改动的细节进行一个详细地描述。例如尝试着回答两个问题:出于什么原因需要进行这次修改?具体改动了些什么?为了和自动生成的提交注释保持一致(例如 git merge 可能会自动生成提交),一定要使用现在时祈使句(例如要使用 change ,而不要使用 changed 和 changes)。

版本控制不是备份系统

版本控制系统具有一个很强大的附带功能,那就是服务器端的备份功能。但是千万不要把 VCS 仅仅当成一个备份系统。特别需要注意的是,只能提交那些有意义的改动。VCS 不是用来备份文件用的。(请参阅 <提交对映改动>)

使用分支功能

分支是 Git 一个非常强大的功能,当然这不是偶然的。自始至终,Git 的宗旨就是提供一个即快速又简单的分支功能。它是一个优秀的工具,并且可以帮助解决开发人员在日常工作中存在的代码冲突的问题,因此分支功能应该广泛地被运用在不同的开发主题中。比如添加新功能,修复错误,尝试新的想法等等。

遵循一个工作流程

Git 可以支持很多不同的工作流程:长期分支、功能分支、合并以及 rebase、git-flow 等等。选择什么样的开发流程要取决如下一些因素:项目开发的类型,部署模式和(可能是最重要的)开发团队成员的个人习惯。不管怎样,选择什么样的流程都需要得到所有开发成员的一致认可,并且一直遵循它。

About Us

As the makers of Tower, the best Git client for Mac and Windows, we help over 100,000 users in companies like Apple, Google, Amazon, Twitter, and Ebay get the most out of Git.

Just like with Tower, our mission with this platform is to help people become better professionals.

That's why we provide our guides, videos, and cheat sheets (about version control with Git and lots of other topics) for free.