在软件开发过程中,版本管理至关重要。当需要修改已有代码时,为了避免破坏原文件、记录修改历史以及支持多人协作,需要使用版本控制系统。
一、Git 的作用
Git 是一款分布式版本控制系统,核心作用是追踪文件的修改历史,管理不同版本的文件。它能解决以下痛点:
本文介绍 Git 分布式版本控制系统的基础知识。涵盖安装配置、核心状态模型(工作区、暂存区、本地及远程仓库)、本地仓库管理(初始化、添加、提交)、远程仓库操作(克隆、推送、拉取)以及辅助功能(日志、撤销、分支管理、冲突解决)。旨在帮助开发者规范版本管理,提升协作效率。

在软件开发过程中,版本管理至关重要。当需要修改已有代码时,为了避免破坏原文件、记录修改历史以及支持多人协作,需要使用版本控制系统。
Git 是一款分布式版本控制系统,核心作用是追踪文件的修改历史,管理不同版本的文件。它能解决以下痛点:
访问官网下载并安装,过程为图形化下一步式,无特殊需求直接默认配置即可。安装完成后,打开终端输入 git --version,若显示版本号则说明安装成功。
安装完成后需配置全局的用户名和邮箱,这是 Git 的身份标识,建议与远程仓库账号信息一致。
git config --global user.name "Your Name"
git config --global user.email "[email protected]"
配置 SSH 公钥的目的是让本地 Git 和远程仓库建立免密连接,避免每次拉取、推送代码都输入账号密码。
在终端执行以下命令生成密钥对:
ssh-keygen -t rsa
生成完成后,查看并复制公钥内容:
cat ~/.ssh/id_rsa.pub
将输出的全部内容粘贴到远程仓库个人设置的 SSH 公钥模块中保存。
在项目文件夹下执行初始化命令:
git init
Git 的版本管理围绕四个核心区域展开,理解这一模型有助于掌握 Git 逻辑:
核心流转关系:工作区 → (add) → 暂存区 → (commit) → 本地仓库 → (push) → 远程仓库;远程仓库 → (pull/fetch) → 本地仓库 → (checkout) → 工作区。
进入项目文件夹,执行 git init 初始化。初始化后会出现隐藏的 .git 文件夹,请勿手动修改或删除。
编写或修改代码后,需将修改添加到暂存区才能提交。
# 添加当前文件夹及子文件夹的所有修改
git add .
# 添加指定单个文件
git add fileName
# 查看暂存区中的文件
git ls-files
确认无误后提交到本地仓库,形成版本记录。每次提交都需要写备注,清晰描述修改内容。
git commit -m '备注提交内容'
示例:
git commit -m '完成首页布局开发'
git commit -m '修复登录功能的 bug'
核心原则:小步提交,每次提交只对应一个功能或一个 bug 的修改。
本地仓库代码需要同步到远程仓库以实现备份和协作,常用平台包括 Gitee、GitHub、GitLab。
在远程仓库平台登录后点击新建仓库,填写名称等信息,创建后获取 SSH 地址。
若远程仓库已有代码,可将其克隆到本地。
git clone 远程仓库地址
如需拉取非主分支,使用 -b 参数指定。
git clone -b 分支名 远程仓库地址
git status # 查看当前仓库状态
git add . # 添加到暂存区
git commit -m 'xxxx' # 提交到本地仓库
git pull # 同步远程仓库到本地
git push # 推送到远程仓库
(1)查看提交日志:git log
git log # 查看完整提交日志
git log --oneline # 查看简洁版提交日志
(2)查看历史命令日志:git reflog
git reflog
(1)撤销修改
若文件仅在工作区修改,未执行 git add,直接撤销:
git checkout 文件名
若文件已添加到暂存区,先撤销到工作区,再撤销修改:
# 暂存区 → 工作区
git reset HEAD 文件名
# 工作区撤销修改
git checkout 文件名
(2)版本回退
将本地仓库回退到指定的历史版本。
git reset --hard 提交 ID
注意:--hard 参数会彻底删除当前版本与目标版本之间的所有修改,执行前务必确认。
开发中建议在分支上进行功能开发,避免直接修改主分支。
(1)查看分支
git branch # 查看本地所有分支
git branch -a # 查看本地 + 远程所有分支
(2)创建分支
git branch 分支名
(3)切换分支
git checkout 分支名
# 新建分支并直接切换到该分支
git checkout -b 分支名
(4)合并分支到当前分支
# 切换到 master 主分支
git checkout master
# 将 dev 分支合并到当前 master 分支
git merge dev
(5)删除分支
# 删除本地指定分支
git branch -d 分支名
# 强制删除本地分支
git branch -D 分支名
(1)第一次关联
git push --set-upstream origin 本地分支名:远程分支名
# 简化版
git push -u origin 分支名
(2)拉取远程分支合并到本地
git pull origin master
多人协作时,若多个开发者修改了同一文件的同一部分代码,合并分支或拉取代码时会出现代码冲突。此时需手动解决冲突,保留想要的结果并提交。
例如新建分支 dev1,修改文件并提交,然后切换到 master 合并。若在另一个分支也修改了相同内容,合并时会产生冲突。打开文件找到冲突标记,手动编辑保留正确内容,然后 commit 并 push。

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online
将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML 转 Markdown 互为补充。 在线工具,Markdown 转 HTML在线工具,online
将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML 转 Markdown在线工具,online
通过删除不必要的空白来缩小和压缩JSON。 在线工具,JSON 压缩在线工具,online
将JSON字符串修饰为友好的可读格式。 在线工具,JSON美化和格式化在线工具,online