一、前言
在了解Git之前,我们需要知道版本控制系统的概念,版本控制系统(Version Control System, VCS)主要用于管理代码变更,确保开发人员可以回溯历史版本,并支持多人协作。根据架构不同,版本控制系统分为 集中式版本控制系统(CVCS) 和 分布式版本控制系统(DVCS),以下为二者的区别。
| 对比项 | 集中式版本控制系统(CVCS) | 分布式版本控制系统(DVCS) |
| 存储方式 | 代码存储在中央服务器,本地只存储当前版本 | 每个开发者本地存储完整仓库 |
| 提交方式 | 直接提交到服务器 | 先提交到本地,再推送到远程 |
| 离线工作 | 不支持,需联网 | 支持,本地可查看历史记录 |
| 服务器依赖 | 服务器宕机则无法工作 | 本地有完整历史,服务器宕机不影响开发 |
| 适合场景 | 小团队或严格权限控制的企业项目 | 大型项目、开源协作、多分支开发 |
集中式版本控制系统,如SVN,而本文要介绍的Git是作为最流行的分布式版本控制系统,被广泛应用于开源项目和企业级开发。它不仅能够高效管理代码变更,还能让多个开发者协作无缝进行,项目随时可追溯、可恢复、可协作。
本篇文章将深入探讨 Git 的基本概念、核心命令以及如何在项目开发中高效应用它,帮助你快速上手。
注意:博主的操作系统为Windows 11,本文需要的环境有终端(基础)和VS code、IDEA(开发项目坏境)。
二、Git 基本工作流程
Git的工作机制与流程,包含了本地仓库与远程仓库的基本交互,依赖于Git内部的基本命令,熟知了Git的基本工作流程,可以满足个人简单的开发学习,并为团队协作铺垫。其工作流程图如下。
在前文放置Git工作流程图是方便后续读者进行回顾

- 抓取/克隆(fetch/clone):从远程仓库获取代码,建立本地仓库。
- 检出(checkout):从本地仓库提取代码到工作区。
- 添加(add):将修改的文件加入暂存区。
- 提交(commit):将暂存区的更改提交到本地仓库。
- 拉取(pull=fetch+merge):从远程仓库获取最新代码并合并。
- 推送(push):将本地提交的代码上传到远程仓库,供团队共享。
三、Git的安装与基本配置
3.1 Git安装
通过查询 Git 官方下载网址,即可下载到最新的安装包如下左图所示(本文只演示Windows-64-bit操作系统)。由于国外网站下载较慢,也可以通过国内镜像网站下载,如下右图所示。
Git 官方下载网址:https://git-scm.com/downloads
Git 国内镜像下载网址:
https://registry.npmmirror.com/binary.html?path=git-for-windows/&sort=desc


下载完成后,以管理员身份打开安装包,安装过程中进行对 Git 基本的安装设置,如版本许可,文件安装目录,系统基本设置等等。建议将安装目录放置在D盘,可以在D盘根目录,新建一个Repository(仓库)文件夹,将Git安装目录设为D:\Repository\Git-2.48.1即可,为文件夹标注版本号,便于后续版本切换与管理。在同意版本许可,设置文件安装目录之后,后续选项除特殊配置,一直默认同意即可。下图是有关安装的基本配置。

安装完成后,通过快捷键Windows+R,在命令框输入cmd打开终端后,再输入如下命令:
git --version # 查询git版本信息
若出现版本号则安装成功(博主使用的是之前版本的Git)

若无法出现版本号则说明,可能是由于某些安装错误原因,没有进行系统环境配置,则需要手动配置。
在Windows搜索框输入编辑系统环境变量,跳出系统属性框后,点击环境变量进行配置。

3.2 Git基本配置
在本地一般采用 Git Bash 作为Git的开发环境,其模拟了一个 Bash(Bourne Again Shell)环境,使得用户可以在 Windows 上运行类似于 Unix 系统中的命令。以下是打开方式。

注意:在哪些目录打开Git Bash,根据自身需求即可,比如已经有本地仓库,则在本地仓库目录打开,这里在用户根目录打开是便于后面的基本配置。
1.配置 Git 用户信息
设置全局的用户名以及电子邮箱地址属于用户级配置,将会在提交信息中对应唯一用户,便于团队成员之间的信息比对与互通。在用户根目录(任意地方均可,因为存在参数global)打开 Git Bash 环境后分别输入以下代码实现:
git config --global user.name "你的用户名" # 修改用户名
git config --global user.email "你的邮箱" # 修改游戏邮箱
注意:使用global 选项是在全局范围内(即所有仓库)应用这些设置。如果只想为当前仓库配置,可以去掉global 选项,并且是在当前库的目录下设置。
代码运行成功后可以查询是否载入成功,输入以下代码:
git config --list

对于查询操作,可以细分为不同特定级别的查询,代码如下:
git config --system --list # 系统级配置
git config --global --list # 用户级配置
git config --local --list # 仓库级配置
读者也可以使用用户级配置查看刚刚修改的用户名及邮箱,每个级别配置显示信息均不相同,下文进行简要说明。
2.编辑不同级别配置文件Git
配置文件设置保存在三个不同的配置文件中:
- 系统级配置(全局影响):通常在
/etc/gitconfig(Git的安装目录中),用于设置全局 Git 代理。 - 仓库级配置(仅影响当前 Git 仓库):在当前仓库的
.git/config,用于设置远程仓库地址、配置分支合并策略、设定本仓库专属的 hooks、rebase 方式等。 - 用户级配置(影响当前用户的所有Git仓库):在用户主目录下的
.gitconfig或 /.gitconfig(Windows:C:\Users\用户名\.gitconfig),用于设置用户的姓名和邮箱、设定别名、设置 Git 命令的默认行为等。
对于这些文件可以手动编辑,或者使用 git config命令进行设置。例如,编辑用户级配置文件:
文件名 ~/.gitconfig
每个文件配置有不同的作用,在入门篇不做细致讲解,只需要知道配置功能设置时对应哪个级别的配置即可,如在上述配置Git用户信息为用户级配置,它会影响当前用户所有的Git仓库。此外,部分功能设置可以直接在命令行中实现。
3.其它部分配置
1)配置命令别名为用户配置,可以简化常用命令的输入,示例代码如下:
git config --global alias.co checkout # checkout简化为co
git config --global alias.br branch # branch简化为br
git config --global alias.ci commit # commit简化为ci
git config --global alias.st status # status简化为st
通过命令行管理简化命令并不方便,为此我给出如下方式:
- 打开用户根目录,创建
.bashrc文件,或者在Git bash命令行中输入以下命令
touch ~/.bashrc
- 在
.bashrc文件中输入需要简化的命令
# checkout简化为co
alias co = 'git checkout'
# 用于简化输出git日志
alias git-log = 'git log --pretty=oneline --all --graph --abbrev-commit'
# 用于输出当前目录所有文件及基本信息
alias ll='ls -al'
- 打开Git bash,执行
source ~/.bashrc,即可使用自定义的简化命令。
2)配置文本编辑器,可以在 Git Bash 中设置默认的文本编辑器,示例代码如下:
git config --global core.editor "nano" # 或者 "vim", "code" (Visual Studio Code)
3)配置全局忽略文件(Global Git Ignore)
WIndows中位于C:\Users\用户名.config\git\ignore
作用:指定所有 Git 仓库都应忽略的文件,如 *.log 或 node_modules/。
设置全局忽略文件:
git config --global core.excludesfile ~/.config/git/ignore
四、Git仓库管理
4.1 本地仓库管理
要实现本地仓库管理,首先要创建并初始化本地仓库。在某一个指定文件目录下打开 Git Bash,创建一个新的文件夹,并进入该文件夹,可以使用以下代码创建文件:
mkdir myproject # 在指定目录创建文件夹
cd myproject # 进入指定的文件夹
在此目录下初始化仓库:
git init # 初始化仓库命令
创建成功后,可得到以下提示信息:

.git文件夹为默认为隐藏文件,需要在文件查看设置中打开显示隐藏文件。
4.1.1 基础操作命令
Git工作目录下对于文件的修改(增加、删除、更新)会存在几个状态,这些修改的状态会随着我们执行Git 的命令而发生变化。原理图如下所示。

1.查看状态
git status
显示工作区和暂存区的状态,查看哪些文件被修改或未跟踪。
2.添加文件到暂存区
git add <file>
将指定文件添加到暂存区,使用 git add . 添加所有修改的文件。
3.提交修改
git commit -m "提交信息"
将暂存区的文件提交到本地仓库,并附加提交信息。
4.查看提交日志
git log
显示提交历史,git log --oneline 可简化显示。
5.版本回退
git reset --hard <commit-id>
根据上述的基础命令,接下来进行实际操作。
注意:此时应该在本地目录初始化的仓库进行操作
1)首先创建一个 README 文件与test.txt以便进行初始提交:
echo "# MyProject" > README.md
touch test.txt
2)添加测试文件到 git 缓存区,文件夹也适用,我在此添加“test.txt”测试文件到 git,缓存区当中,并查看文件状态:
git add test.txt
git status
此时 Git Bash 环境运行结果,可显示“test.txt”文件已经加入缓存区当中,运行图如下所示:

3)添加文件到缓存区后,需要提交信息到仓库中,代码如下:
git commit -m '1.0'
提交版本库成功后,可出现如下图的信息。

对于不是新建的文件可以直接用 git commit -am ‘name’提交到版本库, 提交修改到最近一次版本可以使用命令 git commit –amend。
4)对于查看提交日志详细,可以使用如下代码,按 q 退出:
git log #详细版本信息
git log --oneline #简洁版本信息

5)对于版本回退,使用git reset --hard <commit-id>即可实现。


4.2.2 分支管理
Git分支管理涉及创建、切换、合并和删除分支等操作。以下是一些常见的Git分支管理命令及其代码示例:
1.查看分支
git branch # 查看本地分支
git branch -r # 查看远程分支
git branch -a # 查看所有分支(本地 + 远程)
2.创建分支
git branch new-branch # 创建新分支,但不切换
3. 切换分支
git checkout new-branch # 切换到指定分支(旧方式)
git switch new-branch # Git 2.23+ 推荐使用 switch 命令
4. 创建并切换分支
git checkout -b new-branch # 旧方式
git switch -c new-branch # Git 2.23+ 推荐
5. 合并分支
git checkout main # 切换到主分支
git merge new-branch # 合并 new-branch 到当前分支
6. 删除本地分支
git branch -d new-branch # 删除本地分支(已合并)
git branch -D new-branch # 强制删除本地分支(未合并)
7. 删除远程分支
git push origin --delete new-branch # 删除远程分支
接下来进行实现一个简单的分支管理。
1)创建并切换到 dev 分支并进行开发
从 master 分支创建一个新的 dev 分支,并切换到该分支:
git checkout -b dev
在 dev 分支上进行代码开发和提交,我添加了一个新文件 feature.txt:
echo "This is a new feature" > feature.txt # 将内容重定向至文件(没有自动创建)
git add feature.txt # 添加文件到暂存区
git commit -m "Add new feature in dev branch" # 提交信息
2)切换回 master 分支并合并 dev 分支
在开发完成后,切换回 master 分支并将 dev 分支的更改合并到 master 分支:
git checkout master
git merge dev
4.2.3 实现与解决 MR 冲突
1.MR 冲突的介绍
在 Git 中,合并冲突(Merge Conflict)是指在合并两个分支时,Git 无法自动将它们合并,因为在两个分支中有文件的相同部分进行了不同的修改。此时需要人工干预来决定最终的合并结果。
合并冲突通常在以下情况下产生:
- •同一文件的同一区域被不同分支修改:
当两个分支对同一个文件的同一个位置进行了不同的修改时,Git 无法自动确定该保留哪一个修改,因此会产生冲突。
- 同一文件在一个分支中被删除而在另一个分支中被修改:
如果一个分支删除了一个文件,而另一个分支修改了同一个文件,Git 不知道是该删除文件还是保留修改后的版本,因此会产生冲突。
- 文件被重命名:
当一个分支对文件进行了重命名而另一个分支对文件进行了修改,Git 可能无法自动合并这些更改。
2. 实现与解决 MR 冲突
首先创建一个新分支 branch1 并进行修改:
git checkout -b branch1 # 创建分支并切换
echo "Content added in branch1" >> example.txt # 将内容重定向至文件
git add example.txt # 添加至暂存区
git commit -m "Add content in branch1" # 提交
然后切换回 master 分支,创建另一个新分支 branch2 并进行不同的修改:
git checkout master
git checkout -b branch2 # 创建另一个分支并切换
echo "Content added in branch2" >> example.txt # 将内容重定向至与上述相同文件
git add example.txt # 添加至暂存区
git commit -m "Add content in branch2" # 提交,此时不会报错
切换回 master 分支,并尝试合并 branch1 分支,然后合并branch2 分支以产生 MR 冲突:
git checkout master
git merge branch1
git merge branch2
Git 会在冲突文件中插入冲突标记,打开 example.txt 并查看:

为了解决这个冲突,我可以手动编辑文件以解决冲突。比如,合并两个分支的内容:
Initial content
Content added in branch1
Content added in branch2
保存文件后,标记冲突为已解决并完成合并:
git add example.txt
git commit -m "Resolve merge conflict between branch1 and branch2"
至此,完成了简单的MR冲突模拟与解决。
4.2 远程仓库的连接与管理
4.2.1 远程仓库网址
对于远程仓库的网址,例举有以下几个:
GitHub(https://github.com)
- 全球最流行的Git代码托管平台,支持开源和仓库仓库,提供CI/CD、Issue跟踪、Pull Request等功能。
GitLab(https://gitlab.com)
- 提供完整的DevOps解决方案,支持部署,适用于企业级管理项目和CI/CD集成。
Gitee(码云)(https://gitee.com)
- 由开发者内部维护的Git托管平台,适用于内部访问,支持仓库仓库和企业版服务。
Bitbucket(https://bitbucket.org)
- 适用于小型团队和企业,支持 Git 和 Mercurial,深度集成 Atlassian 生态(如 Jira)。
SourceForge(https://sourceforge.net)
- 主要用于开源项目托管,支持Git、SVN和Mercurial,适合老牌开源项目管理。
本文选取Gitee作为远程仓库进行演示。
4.2.2 远程仓库初始化
1)访问 Gitee 官网:https://gitee.com/,并进行注册。还记得在Git的基本配置中,设置的用户信息吗,在连接远程仓库提交信息的时候将会有所体现。
2)创建远程仓库


使用 SSH 秘钥地址进行 Git 远程操作时,不需要输入用户名和密码,而是通过 SSH 公私钥认证方式进行身份验证。本地的私钥(id_rsa)与远程仓库的公钥(存储在 GitHub/Gitee 等平台)匹配后,才能安全访问远程仓库。所以配置SSH协议,对于安全的管理仓库有重要意义。
4.2.3 配置SSH协议
1.本地没有配置过SSH秘钥
1)生成SSH秘钥
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
可以选择是否输入密码,不需要密码一直按回车即可。
2)查看文件
当生成SSH秘钥时,用户根目录的.ssh文件将会生成多个文件,如下所示。

1. id_rsa(私钥)
- 这是默认的 SSH 私钥,用于 SSH 认证(比如 GitHub、Gitee)。
- 你必须 保密 这个文件,不能泄露,否则你的账户可能被盗用。
2. id_rsa.pub(公钥)
- 这是
id_rsa对应的 公钥,用于提交到远程服务器(如 GitHub、Gitee),让它识别你的身份。 - 公钥可以公开,不影响安全性。
3. id_rsa.gitee(另一个 SSH 私钥)
- 这个是你为 Gitee 生成的 SSH 私钥,你应该在 Gitee 账户中配置它的公钥。
- 由于你已经有默认的
id_rsa,这说明你可能是为了区分 GitHub 和 Gitee 生成了不同的密钥。
4. id_rsa.gitee.pub(Gitee SSH 公钥)
- 这是
id_rsa.gitee对应的 公钥,你需要把它添加到 Gitee 账号的 SSH key 设置中。
5. config(SSH 配置文件)
- 这个文件用于 配置 SSH 连接的不同私钥,让 Git/Gitee 选择正确的密钥。
6. known_hosts(已知主机列表)
- 这个文件存储了 你连接过的 SSH 服务器的指纹,比如 GitHub、Gitee 的服务器信息。
- 每次你用 SSH 连接新的主机时,它会要求确认主机指纹,并存入
known_hosts,防止 MITM(中间人攻击)。
在上述文件中,需要将id_rsa.gitee.pub(Gitee SSH 公钥)的内容复制到Gitee平台中。
3)将公钥添加到远程 Git 仓库
复制新生成的公钥(以Gitee为例):
cat ~/.ssh/id_rsa_gitee.pub # 获取公钥内容并复制

4)测试连接
ssh -T example_name@gitee.com # 测试远程仓库连接

2.本地配置过SSH秘钥
如果本地已经存在SSH秘钥,需要再新建一个,为不同的 Gitee 账户或不同的平台配置多个密钥,可以使用以下步骤进行。
1)生成新的 SSH 密钥(防止覆盖)
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
ssh-keygen -t ed25519 -C "your_email@example.com" -f ~/.ssh/github_work # 指定生成目录


然后再次将生成的公钥文件内容复制到Gitee平台中。

2)配置config文件并测试连接
还记得之前的config文件吗,其用于 配置 SSH 连接的不同私钥,让 Git/Gitee 选择正确的密钥。新建的SSH秘钥并不是默认的,需要进行配置,打开config文件输入:

如果找不到config文件,可以使用命令:
vi ~/.ssh/config # 使用编辑器打开并修改

还记得在Git基本配置中说明可以切换编辑器的代码吗:
git config --global core.editor "nano" # 或者 "vim", "code" (Visual Studio Code)
你可以使用任何一个编辑器打开你的文件进行编辑。
最后测试连接:

五、Git远程仓库与本地仓库交互
5.1 远程仓库的添加与查看
5.1.1 添加远程仓库
在本地仓库中添加远程仓库地址:
git remote add origin <远程仓库地址>
origin是远程仓库的默认名称(可自定义)。<远程仓库地址>可以是 HTTPS 或 SSH 地址,如:- HTTPS:
https://gitee.com/user/repo.git - SSH:
git@gitee.com:user/repo.git
- HTTPS:
5.1.2 查看远程仓库
git remote -v
5.1.3 修改远程仓库地址
如果远程仓库地址变了,可以修改:
git remote set-url origin <新的远程仓库地址>
5.1.4 删除远程仓库
git remote remove origin # 删除
git remote rm origin # 另一种方式
删除后,原来的远程仓库地址就失效了,需要重新添加。
5.2 代码推送(本地 → 远程)
5.2.1 推送本地代码到远程仓库
git push -u origin <分支名>
-u选项将本地分支与远程分支关联,后续可以直接git push。<分支名>通常是main或master。
5.2.2 推送指定分支
git push origin <分支名>
5.2.3 强制推送(谨慎使用)
git push -f origin <分支名>
- 强制推送会覆盖远程仓库的代码,谨慎使用。
5.2.4 推送所有分支
git push --all origin
- 推送所有本地分支到远程仓库。
5.3 代码克隆(远程 → 本地)
git clone <远程仓库地址>
示例:
git clone git@gitee.com:user/repo.git
- 这将在当前目录创建一个文件夹,并将远程仓库的代码下载到本地。
5.4 获取远程代码(拉取与抓取)
5.4.1 仅获取最新代码(fetch)
git fetch origin
- 只获取最新代码 但不合并,不会影响本地代码。
5.4.2 拉取代码并合并(pull)
git pull origin <分支名>
- fetch + merge 的组合,获取远程最新代码并合并到本地当前分支。
5.4.3 解决冲突后继续拉取
如果拉取时遇到冲突:
git pull --rebase origin main
- 先应用远程的更改,再应用本地的更改。
5.5 远程分支管理
5.5.1 查看远程分支
git branch -r # 只列出远程分支
git branch -a # 列出所有分支(本地 + 远程)
5.5.2 拉取远程分支到本地
git checkout -b <本地分支名> origin/<远程分支名>
5.5.3 删除远程分支
git push origin --delete <分支名>
5.5.4 推送本地新建分支到远程
git push origin <本地分支名>
5.6 远程标签管理
5.6.1 创建并推送标签
git tag <标签名>
git push origin <标签名>
5.6.2 删除远程标签
git push origin --delete <标签名>
5.6.3 拉取远程标签
fetch --tags
5.7 其他远程仓库操作
5.7.1 强制同步本地与远程
如果想让本地代码与远程完全一致:
git reset --hard origin/<分支名>
- 会丢失本地未提交的修改,请谨慎操作。
5.7.2 清除本地无用的远程分支
如果远程删除了某个分支,本地 git branch -r 仍然会显示它,使用以下命令清理:
git remote prune origin
六、小结
本文的内容包括了Git安装配置、Git仓库管理、Git远程仓库与本地仓库的交互,涵盖了Git的基本操作,读者若能够理解大部分的内容,则可以回到第二小结:Git 基本工作流程中回忆理解全部的内容,完成Git的基本入门。
对应项目开发使用到的IDE,如VS Code,IDEA等等,其内部均兼容Git仓库管理,并有很多便捷的功能,由于篇幅原因,在此不展开说明,若有后续,则在Git开发篇讲解。
感谢你的观看,对应本文有疑惑、存在错误或者其它问题欢迎联系我yaoshengliy@gmail.com。



留下你的发言叭😘