Skip to content
MuPRO Knowledge

Git

自诞生以来,Git 已成为软件开发领域必不可少的工具。它是一个版本控制系统(VCS),允许开发人员跟踪代码随时间发生的变化。从本质上讲,Git 允许多人同时开发一个项目,而不会覆盖彼此的工作。

Git 的重要性

Git 在软件开发中至关重要,原因有以下几点:

1.协作:Git 允许多个开发人员同时开发同一个项目,而不会相互冲突。

2.版本控制:它能帮助开发人员维护修改历史,从而在需要时进行回溯。每项修改都有时间、作者和所做修改的跟踪记录。

3.代码安全和冗余:当代码被推送到远程版本库时,它就起到了备份的作用。即使本地机器出现故障,代码在远程仓库中也是安全的。

4.效率和速度:Git 通过提供分支和子模块等各种功能,提高了开发过程的整体效率。

为了更好地理解 Git,让我们深入了解一些关键概念和功能:提交、推送和拉取、分支、合并和重置以及子模块。

提交、推送和拉取

在 Git 中提交就像在项目中设置一个检查点,需要时可以还原到该检查点。 它记录了项目的当前状态。

例如:

git add filename
git commit -m "Commit message"

上述命令将提交对 “filename” 文件所做的修改,并显示 “Commit message”。

另一方面,“推送” 会将提交的更改上传到远程版本库。

例如:

git push origin master

上述命令将 “master” 分支的提交推送到 “origin” 远程仓库。

拉取是从远程版本库中获取修改并整合到本地版本库的过程。

例如:

git pull origin master

上述命令会将远程版本库 “origin” 的 “master” 分支中的更改拉入本地版本库。

提交最佳做法

1.频繁提交小改动:与其等到做了大量改动后再提交,不如经常提交小改动。这样更容易识别和理解改动和错误(如果有的话)。
2.编写清晰的提交信息:提交信息应明确说明提交的内容。理想的提交信息以简短(50 个字符或更少)的摘要开头,然后是空行,如有必要,还可以提供更详细的解释。
3.提交相关变更:提交应该是相关变更的封装。例如,修复两个不同的错误应分别提交。
4.不要提交半成品:只有在变更完成并经过测试后才提交。这样,提交的项目版本才能始终有效。
5.在提交前进行测试:提交前一定要运行测试,以确保不会提交错误代码。

分支, 合并

Git 中的分支本质上是一组具有唯一名称的代码变更。它代表一条独立的开发线。Git 的默认分支名称是 “master”。

例如:

git branch new-branch

上述命令创建了一个名为 “new-branch” 的新分支。

合并是 Git 将已分叉的历史重新组合在一起的一种方式。

例如:

git merge new-branch

上述命令将 “new-branch” 合并到当前活动分支中。

分支最佳实做法

1.为每个功能或问题创建一个新分支:根据 GitHub 流程,每个新功能、错误修复或问题都应有自己的分支。这样可以确保主分支始终包含生产质量的代码。
2.使用描述性的分支名称:分支名称应具有描述性,并能反映手头的任务。GitHub Flow 建议用 “add-new-login-button” 或 “issue-15-fix-header” 等描述性的名称来命名分支。
3.使用后合并和删除分支:一旦实现了某个功能或修复了某个错误,就将该分支合并回主分支并删除。这样可以保持项目的整洁和可管理性。
4.让分支与主分支保持同步:如果一个分支存在时间较长,它就会开始明显偏离主分支。定期将主干分支中的改动拉入特性分支,使其保持最新,防止合并冲突。
5.合并前审查代码:使用拉取请求来审查代码,确保其在合并到主分支之前符合团队的标准。

子模块

Git 中的子模块就像是另一个 Git 仓库中的 Git 仓库。当你想在自己的项目中加入一个外部项目,同时保留外部项目的历史记录时,就会用到它。

例如:

git submodule add https://github.com/username/repo.git

上述命令将 “repo” 版本库作为子模块添加到当前项目中。

拉取请求

拉取请求是基于 Git 的平台(如 GitHub、GitLab 或 Bitbucket)中的一项功能,用于软件开发中的协作。拉取请求本质上是一种提议或请求,要求将版本库一个分支中的更改合并到另一个分支(通常是 “main” 或 “master branch”)中。

下面是拉取请求的工作原理:

1.开发人员通过创建一个新分支并将代码提交到该分支来对版本库进行修改。这可能涉及添加新功能、修复错误、重构现有代码等。
2.一旦开发人员准备好将其更改与主代码库集成,他们就会创建一个拉取请求。这个操作主要是说:“我在我的分支中做了一些改动,我希望把它们拉到主分支中”。
3.然后,所有能访问版本库的成员都能看到拉取请求。他们可以查看提议的更改、对其发表评论、提出修改建议,甚至向拉动请求添加额外提交。
4.如果团队一致同意可以进行修改,或者在进行了指定的修改后,就可以合并拉取请求。此操作会将拉取请求分支中的变更整合到主分支中。
5.合并成功后,可以删除用于拉取请求的分支,以保持项目的整洁,但这并不是强制性的。

拉取请求是基于团队的软件开发,尤其是开源项目的基石。它们有助于促进围绕代码的讨论,确保代码质量,在团队成员之间分享知识,并维护变更和决策的历史记录。