使用Git进行软件配置管理(SCM)

文章说明:本文第0-11节、13-15节的内容由《轻量级Java EE企业应用实战(第5版)》的1.7-1.8节改编而来。涉及Git GUI的部分、第12节、第16节为博主原创部分。

标题说明:软件配置管理(Software Configuration Management,SCM)是指在开发过程中各阶段,管理计算机程序演变的学科。SCM提供了结构化、有序化、产品化的软件工程管理方法。软件配置管理的基本单位是软件配置项,由软件开发过程中产生的所有信息构成,包括代码、数据、文档、报告,每一项称为一个配置。Git是当前的主流SCM工具,其官方文档为Pro Git

文中符号说明:命令用法中的<arg1>表示arg1为必选参数。

零、版本管理简介

随着软件工程化的不断深入,项目版本管理是每个软件开发团队都必须面对的问题。如果没有好的版本控制和版本管理,大项目可能无法顺利进行。 对于许多基于互联网的开源项目,版本控制和版本管理则更为重要。即使是对于一个人开发,版本管理工作也很有益处,它能让你的工作条理清晰,能清楚地记录你每次对项目的修改,而且也可以方便地回退到某次修改之前的结果——就像你拥有了随时可用的“后悔药”。

Git是目前非常主流的分布式版本控制工具,由Linux(著名开源操作系统项目)的创始人Linus在2005年着手开发。2008年,GitHub网站上线了,它为开源项目提供免费 Git存储,无数开源项目开始迁移至GitHub。

对于Git而言,每个开发者的本地磁盘上都存放着一份完整的版本库,因此开发者工作时无须联网,直接使用本地版本库即可。只有在需要多人相互协作时,才通过“中央服务器”进行管理。

【提示】简单来说,Git相当于让每个开发者都在本地“缓存”了一份完整的资源库,因此开发者对自己开发的项目文件执行添加、删除、返回之前版本时不需要通过服务器来完成。

一、下载和安装Git for Windows

  1. 访问https://git-scm.com/download/win,下载Git for Windows的最新版本。(Git也有Linux、macOS版本)
  2. 运行安装程序。对于安装过程中出现的Select Components对话框,取消勾选“Windows Explorer Integration”。
  3. 在命令行执行命令git进行测试。
    在这里插入图片描述

二、克隆(Clone)仓库

大多数初学者接触Git是从克隆代码托管平台上的现成仓库开始的。在代码托管平台上,每个仓库的唯一标识符为<个人空间地址>/<仓库路径>,如holeer/git-demo

克隆的操作:在一个目录中打开终端,执行git clone <addr>命令,其中addr为远程或本地仓库的地址。命令示例:git clone https://gitee.com/holeer/git-demo.git

克隆完成后,当前目录中会增加一个以仓库路径为名的目录,该目录中存放的即为被克隆仓库的文件。

三、创建本地资源库

创建一个新的本地资源库非常简单,只需选择需要版本管理的工作目录,然后在该工作目录下创建资源库即可。

3.1 基本操作

进入需要版本管理的工作目录,在该目录中打开终端,执行git init命令。
在这里插入图片描述
创建完成后,Git将会在工作目录下新建一个隐藏的.git文件夹,该文件夹就是Git的本地版本库,它负责管理工作目录下文件的添加、删除、修改、分支等操作。

3.2 设置用户信息

在任意位置打开终端,使用git config --global user.name <username>git config --global user.email <email>命令分别配置用户的名称和Email。比如,执行的命令为git config --global user.name holeergit config --global user.email holeer@csdn.net,则用户的名称被配置为holeer,Email被配置为holeer@csdn.net。这些信息将作为用户提交代码的标识(就是告诉Git谁在提交代码)。后面会看到,每次提交代码时,Git都会记录这些用户信息。(温馨提示:用户信息是用来区分和溯源提交者的,请注意Email等个人隐私保护。一般来说,Github和Gitee等代码托管平台的用户名为个人邮箱,如果不想在提交中暴露个人邮箱,可使用代码托管平台提供的noreply邮箱地址)

以上git config --global...命令设置的是Git的全局信息,全局信息以明文保存在用户HOME目录(在Windows 11中,在资源管理器中输入%homepath%,回车进入)下的.gitconfig文件中,也可以通过直接编辑该文件进行配置。文件内容示例:

 [user]
	name = holeer
	email = holeer@csdn.net

对于Git,除了可以配置全局信息,在某些情况下,还可以配置仅在工作目录内有效的局部信息。比如,用git config user.name <username>git config user.email <email>命令分别配置工作目录中用户的名称和Email。局部信息以明文保存在.git目录下的config文件中。

四、添加(Add)文件和目录

Git 添加文件和目录也很简单,先把文件和目录添加到Git系统管理之下,然后提交修改即可。

例如,在工作目录下增加一个a.py文件,该文件内容可以随便写,比如:print('hello world!')

然后在工作目录中打开终端,执行命令git add <filename>,比如git add a.py。如果执行成功,不会有任何提示。

五、提交(Commit)修改

在Git中添加文件和目录之后,还需要执行提交操作,才能真正将修改提交到版本库中。实际上,Git的操作总是按“(提交前)操作→提交”模式执行的,此处的提交前操作包括添加文件、修改、删除等。

Git 版本库中存了很多东西,其中包括名为stage(index)的暂存区(Git支持多个暂存区,index为下标)。开发者对文件所做的各种操作(添加、删除、修改等),都只是保存在暂存区中,只有等到执行提交时才会将暂存区中的修改批量提交到指定分支。在创建Git本地资源库时,Git会自动创建唯一的master主分支。

Git的提交通过git commit命令完成。由于该操作是Git 最为重要和常用 的操作,一般使用图形界面进行该操作。本节使用Git for Windows 附带的图形界面Git GUI 作为示例。

Git GUI的打开方法:
【方法一】在工作目录中打开终端,执行命令git gui,将会弹出Git GUI的窗口,如下图所示。该窗口所属进程是终端的子进程,会随终端关闭而关闭。
【方法二】如果在第一节的安装中勾选了“Windows Explorer Integration”,在工作目录空白处右键单击,可以看到“Git GUI Here”,选择此选项即可。

在这里插入图片描述
如上图所示,Git GUI的窗口可分为左右2个区域。左区域为文件列表,其中左上区域为未暂存的文件(Unstaged Changes),左下区域为已暂存的文件(Staged Changes)。右上区域为左区域中选中文件的更改,右下区域为提交区。(未暂存文件→已暂存文件:选中未暂存文件,菜单栏>Commit>Stage to Commit)在左下区域选中要提交的文件(如a.py),在提交区的文本框内填写提交信息(Commit Message),如Create a.py,然后点击“Commit”按钮即可提交。提交之后,被选中要提交的文件会从左下区域消失。

在实际开发时,开发者可以使用自己喜欢的IDE工具对工作区的代码进行开发。

六、查看文件或目录的版本变更

Git会集中管理整个仓库的版本变更,还支持查看文件的版本变更历史,并比较任意两个版本之间的差异。下面以Git GUI为例进行说明。

在工作目录中打开Git GUI,菜单栏选择Repository>Visualize master's History,显示当前的master分支的可视化历史,如下图所示。

在这里插入图片描述
如上图所示,分支历史的窗口可分为上下2个区域。上区域为版本列表,每一行是一次提交,对应资源库的一个版本,行内显示提交的Summary(Commit Message的第一行)、提交者、时间。下区域为提交详情,对于上区域中选中的提交,可以在下区域中看到本次提交的唯一标识(SHA1 ID)、提交前后的差异(Diff)、涉及的文件。

查看版本变更历史也可以使用git log命令,该命令将以文字界面的方式显示资源库的版本变更历史,如下图所示。
在这里插入图片描述
许多IDE工具的Git模块提供对文件的版本管理操作,包括对比当前版本与历史版本、退回到历史版本、提取历史版本等。

七、删除文件和目录

在资源管理器中删除文件或文件夹后,同样需要执行提交操作,将修改提交到版本库中。

八、从以前版本重新开始

如果要将整个资源库重设为以前的某个版本,则按如下步骤进行。先打开分支历史窗口,再选中版本列表中希望恢复的版本,右键单击>Reset master branch to here。将会弹出一个对话框,用于指定重设类型。Git支持以下3种重设类型。

重设类型重设指定分支重设暂存区重设工作空间
Soft××
Mixed×
Hard

可以使用IDE工具的Git模块将单个文件恢复到指定版本。恢复单个文件相当于对文件进行了修改,如果希望将这种修改保存到版本库中,同样还需要执行提交操作。

九、创建分支

有时候不想继续沿着开发主线开发,而是希望试探性地添加一些新功能,这时就需要在原来的开发主线上创建一个分支,进而在新的分支上进行开发,避免损坏原有的稳定版本。

创建分支的步骤:在工作目录中打开终端,执行命令git branch <name>。该命令将在当前分支的基础上创建一个名为name的分支。

十、沿着分支开发

为了沿着某个分支进行开发,首先需要切换到该分支所在的版本。

切换分支命令:git checkout <name>,其中name为目标分支的名称。

工作目录切换到指定分支后,接下来对其中文件所做的修改都将沿着该分支进行。

如果开发者沿着某个分支开发了一段时间之后,想继续维护master主分支上的开发,则还可以切换回master主分支继续开发。从新分支切换回master主分支与切换到其他分支并无任何区别。

十一、合并分支

当项目沿着分支试探性地开发新功能达到一定的稳定状态之后,还可以将开发分支和master主分支进行合井,从而将开发分支中的新功能添加到master主分支中。

分支的合并较为复杂,一般通过图形界面进行。

十二、Git客户端

JetBrains IDE:参见《JetBrains IDE使用》中的“版本控制”一节。

VS Code:参见《将VS Code作为开发工具和编辑器使用》中的“源代码管理”一节。(尚未完成)

Github Desktop:对应博文未发布

十三、配置远程中央资源库

前面介绍的Git操作都是直接通过本地资源库进行的(无须连接远程资源库,克隆除外),这就是Git的典型特点:分布式。但是当多个开发者需要对项目进行协作开发时,最后还是需要连接远程中央资源库的,所有开发者都需要通过远程中央资源库进行项目交换

Gitee、GitHub等代码托管平台为用户提供了免费的远程中央服务器,如果是个人、小团队的开源项目,则可以直接使用Gitee作为中央服务器进行托管。但如果是公司开发的项目,则通常不会选择Gitee作为中央服务器,往往会在企业内部搭建自己的中央服务器。

【提示】GitStack是Windows系统上的远程中央资源库,具有简单、易用的特征。在企业实际开发中大多会采用Linux系统来配置Git中央资源库,在Linux上配置中央资源库其实更方便。

十四、推送(Push)项目

推送项目指的是将本地资源库的更新推送给中央资源库。注意,推送者必须要有中央资源库的写入权限。在推送时,以“用户名+密码”或SSH密钥对作为凭证来验证写入权限

【提示】推送命令:git push <远程URL> <远程分支名>:<本地分支名>。如果不指定<远程分支名>:<本地分支名>,则默认推送本地当前分支到远程当前分支。

十五、获取(Fetch)项目和拉取(Pull)项目

在多人协作开发时,如果团队中有人向远程的中央版本库中提交了更新,那么团队中其他人就需要将这些更新取回本地,这时就要获取项目或拉取项目。

获取项目与拉取项目的区别在于:

  • 获取项目只是取回中央版本库中的更新,不会自动将更新合并到本地项目中,因此它取回的代码对本地开发代码不会产生任何影响
  • 拉取项目会取回中央版本库中的更新,且自动将更新合并到本地项目中。

通过获取项目所取回的更新,在本地主机上要用“远程主机名/分支名”的形式读取。比如origin主机的develop分支,就要用origin/develop来读取。远程主机名其实就是为远程资源库的URL起的一个代号,其配置信息保存在.git/config文件中。

获取项目之后,既可将远程分支创建成本地项目的新分支,也可将远程分支合并到本地项目的指定分支上。

在默认情况下,获取项目将取回所有分支的更新。以下命令将取回中央资源库的所有分支:git fetch <远程主机URL>。如果只想取回特定分支的更新,则执行以下命令:git fetch <远程主机URL> <分支名>

拉取项目命令的格式:git pull <远程主机URL> <远程分支名>:<本地分支名>。如果希望将远程中央资源库的某个分支合并到本地资源库的当前分支上,省略本地分支名即可。

由于拉取操作涉及分支的合并,一般通过图形界面进行。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Git是一种分布式版本控制系统,它可以帮助开发者管理和跟踪项目的代码变更。下面是配置Git的步骤: 1. 安装Git:首先,你需要在你的计算机上安装Git。你可以从Git官方网站(https://git-scm.com/downloads)下载适合你操作系统的安装包,并按照安装向导进行安装。 2. 配置用户信息:在安装完成后,你需要配置你的用户信息,包括用户名和邮箱地址。这些信息将会与你的代码提交一起显示。你可以使用以下命令进行配置: ``` git config --global user.name "Your Name" git config --global user.email "your_email@example.com" ``` 3. 选择文本编辑器:Git使用文本编辑器来进行提交信息的编辑。如果你没有指定默认的文本编辑器,Git使用系统默认的编辑器。你可以使用以下命令来设置默认的文本编辑器: ``` git config --global core.editor "editor_name" ``` 4. 配置SSH密钥(可选):如果你打算通过SSH协议与远程仓库进行通信,你可以配置SSH密钥。首先,你需要生成SSH密钥对,然后将公钥添加到你的远程仓库中。具体的步骤可以参考Git官方文档或者相关教程。 5. 初始化仓库:如果你要在当前目录下创建一个新的Git仓库,你可以使用以下命令: ``` git init ``` 6. 配置远程仓库(可选):如果你要与远程仓库进行协作,你需要将远程仓库添加到你的本地仓库中。你可以使用以下命令来添加远程仓库: ``` git remote add origin remote_repository_url ``` 以上是Git的基本配置步骤。如果你还有其他问题,请继续提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值