Git教程

发布于 2023-10-03  109 次阅读


一、教程概述

本教程为Git版本控制系统的新手入门文档,覆盖Git核心原理、全量常用命令行操作,同时补充主流集成开发环境(IDE)的可视化Git操作指南,帮助新手快速掌握Git的基础使用方法与团队协作规范。

一般现代化的集成开发环境(如IDEA)都会自带Git可视化面板或者选项,所以不需要死记硬背指令,记住大概概念即可。

二、Git基础概述

2.1 核心定义

Git是一款开源的分布式版本控制系统,用于追踪文件的修改历史,支持多人协同开发,是当前软件开发领域的主流版本管理工具。

需明确核心区分:Git ≠ 远程代码托管平台。Git为本地版本管理工具,GitHub、Gitee、GitLab等为基于Git的远程代码托管平台,用于远程仓库存储与协作管理。

2.2 核心工作区域

Git的所有操作均围绕以下4个核心区域完成,所有命令的本质是实现文件在4个区域之间的流转:

  • 工作区:用户本地直接编辑的项目目录,是文件修改的发生地。
  • 暂存区:用于临时存放待提交的文件修改,是工作区与本地仓库之间的过渡区域。
  • 本地仓库:存储在用户本地设备的Git数据库,保存项目完整的版本历史与提交记录,断网环境下仍可操作。
  • 远程仓库:部署在云端服务器的Git仓库,用于代码的远程备份、共享与协同开发。

2.3 .gitignore文件规范

.gitignore文件用于指定Git无需追踪的文件与目录,避免将非必要文件(如依赖包、编译产物、本地配置文件)纳入版本管理,需在项目初始化阶段配置完成。

基础写法:

# 忽略整个文件夹
node_modules/
.idea/
.vscode/
# 忽略指定后缀的文件
*.log
# 忽略特定文件
.env
.DS_Store

新手可通过 gitignore.io 输入项目类型,直接生成符合规范的.gitignore文件。

三、环境搭建与基础配置

3.1 Git安装

  1. 打开Git官方下载地址:https://git-scm.com/downloads
  2. 选择对应操作系统的安装包,下载后按默认配置完成安装。
  3. 安装验证:打开终端(Windows使用CMD/PowerShell,Mac/Linux使用终端),执行命令git --version,若输出Git版本号,即为安装成功。

3.2 全局基础配置

Git的全局配置用于标记提交者的身份信息,所有本地仓库的提交都会默认使用该配置,安装完成后需优先配置。

设置全局用户名

设置全局用户邮箱

# 配置全局用户名,建议与远程代码托管平台的用户名一致
git config --global user.name "你的用户名"
# 配置全局邮箱,建议与远程代码托管平台的注册邮箱一致
git config --global user.email "你的注册邮箱"

配置完成后,可执行以下命令查看所有配置,确认信息无误。

git config --list

3.3 HTTP代理配置

常用的Git托管平台(如Github)在国内的链接稳定性堪忧,一般会使用代理进行链接加速。而Git的代理需要单独设置才可以生效,其中127.0.0.1代表本机,端口请自行查看代理软件。

  • 设置代理
git config --global http.proxy 127.0.0.1:7890
git config --global https.proxy 127.0.0.1:7890
  • 取消代理
git config --global --unset http.proxy
git config --global --unset https.proxy

3.4 SSH密钥配置(可选)

连接远程仓库支持HTTPS与SSH两种协议,HTTPS协议每次操作需输入账号密码,SSH协议配置完成后可实现免密操作,一般来说现代化编辑器会包括登录和相关引导,这一步可以先跳过。

  1. 打开终端,执行命令生成SSH密钥对:
ssh-keygen -t ed25519 -C "你的注册邮箱"
  1. 后续弹出的提示全程按回车确认,无需额外设置。
  2. 生成完成后,找到对应系统的公钥文件:
    • Windows系统:C:\Users\你的用户名\.ssh\id_ed25519.pub
    • Mac/Linux系统:~/.ssh/id_ed25519.pub
  3. 用文本编辑器打开.pub公钥文件,复制文件内的全部内容。
  4. 打开远程代码托管平台,进入「设置」-「SSH公钥」页面,将复制的公钥内容粘贴并保存。
  5. 配置验证:终端执行对应命令,提示认证成功即为配置完成。
# GitHub平台验证
ssh -T git@github.com
# Gitee平台验证
ssh -T git@gitee.com

四、Git核心命令行操作

本章节覆盖Git日常开发全场景的核心命令,按操作流程与使用场景分类说明。

4.1 本地仓库初始化与首次提交

用于将本地已有的项目纳入Git版本管理,是Git使用的起点。

  1. 终端进入项目根目录:
cd 你的项目目录路径
  1. 初始化本地Git仓库:
git init

执行后将在当前目录生成隐藏的.git目录,该目录为Git的本地仓库数据库,请勿修改或删除。

  1. 将文件添加至暂存区:
# 添加项目内所有文件
git add .
# 添加指定文件/目录
git add 文件名/目录名
  1. 提交暂存区内容至本地仓库,生成版本记录:
git commit -m "提交说明"

-m参数用于添加本次提交的描述信息,需清晰说明本次提交的修改内容,便于后续版本回溯;每次提交会生成唯一的commit ID,作为该版本的唯一标识。

4.2 远程仓库关联与克隆

4.2.1 本地仓库关联远程仓库

用于将本地初始化的仓库与云端远程仓库绑定,实现代码的远程备份与共享。

git remote add origin 远程仓库地址
  • origin为远程仓库的默认别名,可自定义;
  • 远程仓库地址支持SSH与HTTPS两种协议,推荐使用已配置免密的SSH地址。

4.2.2 克隆远程仓库至本地

用于将已有的云端远程仓库完整下载到本地,自动完成仓库初始化与远程关联。

git clone 远程仓库地址

执行后将在当前目录生成与远程仓库同名的项目目录,无需额外配置即可直接使用。

4.3 日常修改提交流程

日常开发中最常用的操作流程,用于将代码修改同步至本地与远程仓库。

  1. 查看当前仓库状态,确认修改的文件:
git status
  1. 查看文件的具体修改内容:
git diff
  1. 将修改的文件添加至暂存区:
# 添加指定修改文件
git add 文件名
# 添加所有修改文件
git add .
  1. 提交至本地仓库,生成版本记录:
git commit -m "提交说明"
  1. 推送本地提交至远程仓库:
# 首次推送,需设置本地分支与远程分支的关联关系
git push -u origin 分支名
# 已设置关联后的常规推送
git push

4.4 分支管理操作

分支是Git的核心功能,用于隔离不同的开发任务,避免直接在主分支开发导致代码不稳定。主分支(通常为mainmaster)用于存放稳定可发布的代码,功能开发、bug修复需在独立分支完成后再合并至主分支。

  1. 查看分支列表:
# 查看本地所有分支,当前所在分支前会标注*符号
git branch
# 查看远程所有分支
git branch -r
# 查看所有本地与远程分支
git branch -a
  1. 新建分支:
git branch 分支名

基于当前分支的最新提交新建分支。

  1. 切换分支:
git switch 分支名

旧版Git可使用git checkout 分支名实现相同效果。

  1. 新建并直接切换至新分支(日常开发常用):
git switch -c 分支名
  1. 合并分支:
git merge 待合并分支名

将指定分支的修改合并至当前所在分支。例:需将feature分支合并至main分支时,需先切换至main分支,再执行git merge feature

  1. 删除分支:
# 删除本地已合并的分支
git branch -d 分支名
# 强制删除本地未合并的分支
git branch -D 分支名
# 删除远程分支
git push origin --delete 分支名

4.5 远程代码拉取

用于拉取远程仓库的最新代码,同步至本地分支,保持本地代码与远程一致。

git pull

该命令会自动拉取当前分支对应远程分支的最新代码,并合并至本地分支,等同于依次执行git fetch(拉取远程代码但不合并)与git merge操作。

4.6 合并冲突处理

4.6.1 冲突产生原因

当两个分支修改了同一文件的同一行内容,Git无法自动判断需保留的内容时,会产生合并冲突,需手动处理后再完成合并。

4.6.2 冲突处理流程

  1. 合并或拉取代码触发冲突后,执行以下命令查看标记为both modified的冲突文件。
git status
  1. 打开冲突文件,Git会在冲突位置添加如下标记:
<<<<<<< HEAD
当前分支的代码内容
=======
待合并分支的代码内容
>>>>>>> 待合并分支名
  1. 手动编辑冲突文件,删除所有冲突标记,保留最终需要的代码内容。
  2. 冲突处理完成后,执行以下命令,将修改后的文件添加至暂存区。
git add 冲突文件
  1. 执行以下命令,完成合并提交。
git commit -m "fix: 解决合并冲突"

理论这一段在IDEA会有可视化窗口进行操作

4.7 版本回退

用于将当前分支回退至指定的历史版本,恢复历史代码状态。

  1. 查看提交历史,获取目标版本的commit ID:
git log

执行后将按时间倒序展示所有提交记录,包括commit ID、提交人、提交时间、提交说明,取commit ID的前7位即可用于回退操作;按q可退出日志查看。

  1. 执行版本回退:
# 软回退:仅重置提交记录,差异内容保留在暂存区,不会丢失代码
git reset --soft 目标commit ID
# 硬回退:完全重置至目标版本,后续所有提交与修改都会被删除,需谨慎使用
git reset --hard 目标commit ID
  1. 若需将回退后的版本同步至远程仓库,执行强制推送:
git push -f

强制推送会覆盖远程仓库的对应分支,仅可在个人专属分支使用,禁止在团队共用的主分支执行该操作。

4.8 临时修改暂存

用于临时保存工作区未完成的修改,无需提交即可切换分支执行其他操作,处理完成后可恢复之前的修改。

# 暂存当前所有修改
git stash
# 查看所有暂存记录
git stash list
# 恢复最近一次暂存的修改,并删除对应的暂存记录
git stash pop
# 恢复指定暂存记录,不删除暂存记录
git stash apply 暂存记录名(如stash@{0})
# 删除所有暂存记录
git stash clear

五、团队协作标准工作流

本规范为中小团队通用的Git协作流程,可有效避免分支混乱与代码冲突,保障主分支代码稳定,新手可直接参照执行:

  1. 同步主分支最新代码:切换至main主分支,执行git pull拉取远程最新代码,确保本地主分支为最新状态。
  2. 新建开发分支:基于最新的main分支,新建独立的开发分支,分支命名需清晰规范,格式参考:feature/功能名称(功能开发)、fix/问题描述(bug修复)、hotfix/紧急修复内容(线上紧急修复)。
  3. 分支开发与提交:在新建的开发分支完成开发,按功能节点提交代码,提交说明需符合规范,清晰描述修改内容。
  4. 同步主分支代码:开发完成后,切换至main分支拉取最新代码,再切换回开发分支,执行git merge main,将主分支最新代码合并至开发分支,提前处理合并冲突。
  5. 推送分支与提交合并请求:将开发分支推送至远程仓库,在代码托管平台提交合并请求(Pull Request/Merge Request,简称PR/MR),经团队代码审核通过后,合并至main主分支。
  6. 分支清理:分支合并完成后,删除本地与远程对应的开发分支,避免冗余分支堆积。

六、主流IDE的可视化Git操作指南

本章节统一说明VSCode与IntelliJ IDEA系列IDE的可视化Git操作,所有操作均对应上述命令行功能,新手可在掌握核心逻辑后,通过可视化操作简化流程。

6.1 VSCode可视化操作

VSCode内置原生Git支持,无需额外安装插件即可完成全流程Git操作,核心操作入口为左侧活动栏的「源代码管理」面板(快捷键Ctrl+Shift+G)。

  • 仓库初始化:打开项目目录后,在「源代码管理」面板点击「初始化存储库」,对应git init命令。
  • 文件暂存与提交:修改的文件会展示在「更改」列表中,鼠标悬浮至文件上点击「+」号即可将文件添加至暂存区(对应git add命令);在面板顶部的输入框填写提交说明,点击「提交」按钮即可完成本地提交(对应git commit命令)。
  • 分支管理:点击编辑器左下角状态栏的分支名称,可打开分支管理面板,完成分支的新建、切换、删除操作,对应git branchgit switch等命令。
  • 拉取与推送:「源代码管理」面板顶部的「↓ 拉取」「↑ 推送」按钮,对应git pullgit push命令;状态栏的同步图标可同时完成拉取与推送操作。
  • 冲突处理:合并触发冲突后,打开冲突文件,VSCode会在冲突位置提供快捷操作按钮,可直接选择「接受当前更改」「接受传入更改」「接受双方更改」完成冲突处理,处理完成后暂存并提交即可。
  • 版本历史与回退:可安装「Git History」扩展插件,安装后可在「源代码管理」面板打开提交历史记录,选中目标提交可执行版本回退操作,对应git loggit reset命令。
  • 临时暂存修改:在「源代码管理」面板的「...」更多菜单中,选择「Stash」相关选项,即可完成修改的暂存与恢复,对应git stash系列命令。

6.2 IntelliJ IDEA系列可视化操作

IntelliJ IDEA及同系列的WebStorm、PyCharm、GoLand等IDE均内置了完善的Git可视化管理功能,操作逻辑统一,核心操作入口为顶部菜单栏的「Git」选项,以及底部工具栏的「Git」面板。

  • 仓库初始化:打开项目后,点击顶部菜单栏「VCS」-「Enable Version Control Integration」,在弹窗中选择「Git」即可完成仓库初始化,对应git init命令。
  • 文件暂存与提交:修改的文件会在项目视图中以颜色标记,右键点击项目或对应文件,选择「Git」-「Add」即可添加至暂存区(对应git add命令);点击顶部工具栏的「√ 提交」按钮,或右键选择「Git」-「Commit Directory」,在弹窗中勾选提交文件、填写提交说明,点击「提交」即可完成本地提交(对应git commit命令)。
  • 分支管理:点击编辑器右下角状态栏的分支名称,可打开分支管理面板,完成分支的新建、检出(切换)、合并、删除操作,对应git branchgit switchgit merge等命令。
  • 拉取与推送:顶部工具栏的「↓ 拉取」「↑ 推送」按钮,对应git pullgit push命令,点击后在弹窗中确认对应分支即可完成操作。
  • 冲突处理:合并或拉取触发冲突后,IDE会自动弹出冲突处理窗口,窗口分为三部分:左侧为本地分支代码、右侧为待合并分支代码、中间为最终合并结果,点击代码旁的箭头可将对应内容添加至结果区,编辑完成后点击「应用」即可完成冲突处理。
  • 版本历史与回退:打开底部「Git」面板,切换至「Log」标签,即可查看完整的提交历史,右键选中目标提交,选择「将当前分支重置到此处」,即可选择对应的重置模式完成版本回退,对应git loggit reset命令。
  • 临时暂存修改:右键点击项目,选择「Git」-「Stash Changes」即可暂存当前修改;选择「Git」-「Unstash Changes」即可恢复暂存的修改,对应git stash系列命令。
届ける言葉を今は育ててる
最后更新于 2026-03-24