版本控制
版本控制是软件开发过程中用于管理代码变更的重要手段,它可以记录代码的历史版本,方便开发者进行回溯、协作和问题排查。本地版本控制、集中版本控制和分布式版本控制是三种不同的版本控制模式
本地版本控制
本地版本控制是最基础的版本控制方式,它只在单个计算机上进行操作,通过某种机制来管理文件的不同版本。这种方式主要用于个人开发者管理自己的项目,记录文件在不同时间点的状态。(在个人电脑上留存了个人的版本信息记录)
集中版本控制
集中版本控制采用中央服务器来存储所有文件的版本信息,团队成员通过连接到中央服务器来获取和提交代码。所有的版本数据都集中管理,开发者需要与中央服务器进行交互来进行版本控制操作(SVN),便于团队协作,但如果中央服务器出现故障,所有的版本会有丢失风险
分布式版本控制
分布式版本控制中,每个开发者的本地仓库都是一个完整的版本库,包含了项目的所有历史记录和版本信息。开发者可以在本地进行各种版本控制操作,如提交、分支管理等,而不需要实时连接到中央服务器。缺点是占用空间大,因为每个开发者的本地仓库都包含完整的项目历史记录

版本控制工具Git
Git 是一款强大的分布式版本控制系统,被广泛应用于软件开发中,用于管理项目代码的变更历史。以下将从基础概念、安装配置、基本操作、分支管理、远程仓库协作等方面详细介绍 Git 版本控制。
基础概念
- 仓库(Repository):包含项目所有文件以及文件历史记录的集合。分为本地仓库和远程仓库,本地仓库在开发者自己的计算机上,远程仓库通常存放在代码托管平台(如 GitHub、GitLab 等)。
- 提交(Commit):将文件的当前状态保存到本地仓库的操作,每次提交都会生成一个唯一的哈希值(commit ID),用于标识这次变更。
- 分支(Branch):可以理解为项目的不同开发线路,每个分支独立发展,互不影响。通过创建分支,开发者可以同时进行多个不同功能的开发。
- 合并(Merge):将一个分支的变更整合到另一个分支的操作。例如,将开发分支的代码合并到主分支。
- 拉取(Pull):从远程仓库获取最新代码并合并到本地仓库的操作。
- 推送(Push):将本地仓库的提交推送到远程仓库的操作。
安装与配置
- 安装 :根据不同的操作系统,可以从 Git 官方网站 下载相应的安装包进行安装。
- 配置用户信息:安装完成后,需要配置用户名和邮箱,这些信息会关联到你的提交记录。
bash
git config --global user.name "Your Name"
git config --global user.email "your_email@example.com"
git config -l
git config --system --list
git config --global --list
检查是否配置成功

基本操作

git一般有四个工作区域,分为工作区、暂存区、本地仓库、远程仓库

初始化仓库
在项目目录下执行以下命令,将一个文件夹变成仓库。
bash
git init

添加文件到暂存区(仓库)
将修改或新增的文件添加到暂存区,准备进行提交。
bash
# 添加单个文件
git add file_name
# 添加所有文件
git add .
提交文件到本地仓库
将暂存区的文件提交到本地仓库,并添加提交说明。
bash
git commit -m "提交说明"
可以右键打开GUI观察添加过程

查看状态
查看当前工作目录和暂存区的文件状态。
bash
git status

查看提交历史
查看仓库的提交历史记录。
bash
git log
远程仓库协作
关联远程仓库
- 注册gitee账号,注册完后进入设置配置公钥

- 通过命令
ssh-keygen
生成 SSH Key:
输入ssh-keygen命令,然后全部回车

查看生成的公钥和私钥:ls ~/.ssh/

读取公钥文件:cat ~/.ssh/id_ed25519.pub(这个是我自己的公钥文件,替换成你自己的公钥文件之后执行)

将生成的公钥粘贴到SSH公钥框中:

接下来创建仓库:

创建好后取SSH地址,创建一个用于接收远程仓库的文件夹,输入克隆命令:git clone 输入你自己的SSH地址,刚开始创建仓库的小伙伴会遇到警告,因为仓库中没有文件,不必理会

此时用于接收远程仓库的文件夹里会有对应文件,打开后有.git文件

接下来就可以从本地仓库向远程仓库发送文件了
在该文件夹下输入
bash
git add .
git commit -m "第一次发送到远程仓库"
git push

此时在远程仓库中就生成了对应的文件夹

再放一遍操作关系图片

分支管理
在软件开发等项目中,通常会有多个功能需要同时开发,或者需要同时进行新功能开发和旧版本维护等工作。通过创建不同的分支,开发人员可以在各自的分支上独立地进行开发、测试等工作,互不干扰。
创建分支
创建一个新的分支。
bash
git branch branch_name
切换分支
切换到指定的分支。
bash
git checkout branch_name
创建并切换分支
可以将创建分支和切换分支的操作合并为一步。
bash
git checkout -b branch_name
合并分支
将指定分支的变更合并到当前分支。
bash
# 假设当前在主分支,要合并 feature 分支的变更
git merge feature
删除分支
删除指定的分支。
bash
git branch -d branch_name
执行完分支语句后需要在重新发送到远程仓库,在发送之前先要拉取远程仓库里的内容
原因:在多人协作开发中,不同开发者可能会同时对同一文件的同一部分进行修改。如果直接推送本地修改而不先拉取远程更新,就可能导致本地和远程的修改相互冲突,Git 无法自动合并这些修改。