

✨博客主页: https://blog.csdn.net/m0_63815035?type=blog
💗《博客内容》:大数据、AI开发、Java、测试开发、Python、Android、Go、Node、Android前端小程序等相关领域知识
📢博客专栏: https://blog.csdn.net/m0_63815035/category_11954877.html
📢欢迎点赞 👍 收藏 ⭐留言 📝
📢本文为学习笔记资料,如有侵权,请联系我删除,疏漏之处还请指正🙉
📢大厦之成,非一木之材也;大海之阔,非一流之归也✨

目录
-
- [一、Git 概述](#一、Git 概述)
-
- [1.1 什么是版本控制系统](#1.1 什么是版本控制系统)
- [1.2 集中式 vs 分布式](#1.2 集中式 vs 分布式)
- [1.3 Git 的诞生](#1.3 Git 的诞生)
- [二、Git 安装与配置](#二、Git 安装与配置)
-
- [2.1 下载安装](#2.1 下载安装)
- [2.2 全局配置(必须)](#2.2 全局配置(必须))
- 三、创建版本库(仓库)
-
- [3.1 初始化仓库](#3.1 初始化仓库)
- [3.2 添加文件到仓库](#3.2 添加文件到仓库)
- 四、基本操作命令
-
- [4.1 查看状态](#4.1 查看状态)
- [4.2 查看修改内容](#4.2 查看修改内容)
- [4.3 查看提交历史](#4.3 查看提交历史)
- [4.4 版本回退](#4.4 版本回退)
- 五、工作区、暂存区和版本库
- 六、撤销修改
-
- [6.1 工作区修改未 add](#6.1 工作区修改未 add)
- [6.2 已 add 但未 commit](#6.2 已 add 但未 commit)
- [6.3 已 commit 但未 push](#6.3 已 commit 但未 push)
- 七、删除文件
- 八、分支管理(重点)
-
- [8.1 分支基本命令](#8.1 分支基本命令)
- [8.2 合并冲突](#8.2 合并冲突)
- [8.3 分支管理策略](#8.3 分支管理策略)
- 九、远程仓库
-
- [9.1 远程仓库类型](#9.1 远程仓库类型)
- [9.2 本地与远程仓库的关联](#9.2 本地与远程仓库的关联)
- [9.3 推送和拉取](#9.3 推送和拉取)
- [9.4 SSH 认证(推荐)](#9.4 SSH 认证(推荐))
- [9.5 解决冲突](#9.5 解决冲突)
- [十、忽略文件 `.gitignore`](#十、忽略文件
.gitignore) - [十一、IDEA 集成 Git](#十一、IDEA 集成 Git)
-
- [11.1 配置 Git 路径](#11.1 配置 Git 路径)
- [11.2 基本操作](#11.2 基本操作)
- [11.3 忽略文件插件](#11.3 忽略文件插件)
- [十二、Git 可视化工具](#十二、Git 可视化工具)
- 十三、常用命令速查表
- 十四、常见问题
- 十五、结尾
Git 是目前最流行的分布式版本控制系统,由 Linux 之父 Linus Torvalds 在两周内开发完成。本文从零开始讲解 Git 的安装、基本命令、分支管理、远程仓库协作等内容,适合初学者和日常开发参考。

一、Git 概述
1.1 什么是版本控制系统
版本控制系统用于跟踪文件的变化,记录每次修改,并允许用户回退到任意历史版本。主要解决以下问题:
- 多人协作时代码合并
- 误删或误改后恢复
- 查看修改历史
1.2 集中式 vs 分布式
| 类型 | 代表 | 特点 |
|---|---|---|
| 集中式 | CVS、SVN | 中央服务器保存所有版本,需联网才能工作,速度慢,中央服务器单点故障 |
| 分布式 | Git | 每个开发者本地都有完整版本库,无需联网即可提交、查看历史,安全性高,速度快 |
Git 的优势:不依赖网络、分支管理强大、速度极快、数据完整性高。
1.3 Git 的诞生
- 2002 年前,Linus 手动合并 Linux 内核代码。
- 使用 BitKeeper 免费版后,因社区成员破解协议,BitMover 收回授权。
- Linus 花两周用 C 语言写出了 Git,一个月后 Linux 源码即由 Git 管理。
二、Git 安装与配置
2.1 下载安装
- 官网:https://git-scm.com/downloads
- 根据操作系统选择相应版本,Windows 下为
.exe安装包。
安装时建议:
- 选择
Use Git from the Windows Command Prompt(可在命令行使用 git 命令) - 选择
Checkout Windows-style, commit Unix-style line endings(跨平台换行符处理) - 选择
Use MinTTY终端
2.2 全局配置(必须)
打开 Git Bash,设置用户名和邮箱(用于标识提交者):
bash
git config --global user.name "Your Name"
git config --global user.email "your_email@example.com"
查看配置:
bash
git config --list
注意:
--global表示全局配置,对当前用户所有仓库生效。也可以针对单个仓库去掉--global。
三、创建版本库(仓库)
版本库(repository)是一个被 Git 管理的目录,所有文件的变化都会被 Git 跟踪。
3.1 初始化仓库
bash
mkdir myproject
cd myproject
git init
执行后会在当前目录下生成隐藏的 .git 文件夹,这是 Git 的核心,不要随意修改。
3.2 添加文件到仓库
-
在仓库目录下创建或修改文件,例如
readme.txt。 -
将文件添加到暂存区:
bashgit add readme.txt # 添加单个文件 git add . # 添加当前目录所有变化(包括新文件和修改) -
将暂存区内容提交到仓库:
bashgit commit -m "提交说明"
Git 需要两步提交的原因:
add可以多次添加不同文件,commit一次性提交所有已添加的修改。
四、基本操作命令
4.1 查看状态
bash
git status
显示当前工作区和暂存区的状态,提示哪些文件被修改、新增或删除,以及哪些修改已添加到暂存区。
4.2 查看修改内容
bash
git diff # 查看工作区与暂存区的差异
git diff --cached # 查看暂存区与最新提交的差异
git diff HEAD # 查看工作区与最新提交的差异
git diff <commit1> <commit2> # 比较两个提交的差异
4.3 查看提交历史
bash
git log # 详细日志
git log --oneline # 一行显示简洁信息
git log --graph --oneline # 图形化显示分支结构
4.4 版本回退
bash
# 回退到上一个版本(HEAD 表示当前版本,HEAD^ 上一个,HEAD~n 上 n 个)
git reset --hard HEAD^
# 回退到指定提交(使用 commit id 的前几位)
git reset --hard <commit-id>
# 查看所有历史命令(可用于找回回退后的提交 id)
git reflog
git reset 有三种模式:
--soft:仅移动 HEAD,不修改暂存区和工作区--mixed(默认):移动 HEAD,重置暂存区,保留工作区修改--hard:移动 HEAD,重置暂存区和工作区(危险,会丢失未提交的修改)
五、工作区、暂存区和版本库
-
工作区(Working Directory):本地文件夹,能看到的所有文件。
-
暂存区(Stage / Index) :
.git/index文件,临时保存要提交的修改。 -
版本库(Repository) :
.git目录,存储所有提交的版本和分支信息。工作区 → git add → 暂存区 → git commit → 版本库(当前分支)
每次 git add 将工作区的修改添加到暂存区;git commit 将暂存区快照提交到当前分支。
六、撤销修改
6.1 工作区修改未 add
丢弃工作区的修改,回到最近一次 git add 或 git commit 的状态:
bash
git checkout -- <file>
注意:
--很重要,没有它表示切换分支。
6.2 已 add 但未 commit
-
将文件从暂存区移除(但保留工作区修改):
bashgit reset HEAD <file> -
然后按工作区方式撤销。
或者直接:
bash
git rm --cached <file> # 仅从暂存区删除,工作区保留
6.3 已 commit 但未 push
使用版本回退(git reset --hard HEAD^)或修改最后一次提交:
bash
git commit --amend # 修改最后一次提交的说明或添加遗漏的文件
七、删除文件
-
从工作区和暂存区删除文件:
bashgit rm <file> -
提交删除操作:
bashgit commit -m "删除文件"
如果误删了工作区文件但尚未 git rm,可用 git checkout -- <file> 恢复。
八、分支管理(重点)
分支是 Git 最强大的特性,允许在独立线上开发新功能,最后合并回主分支。
8.1 分支基本命令
| 命令 | 说明 |
|---|---|
git branch |
列出所有本地分支,当前分支前有 * |
git branch <name> |
创建分支 |
git checkout <name> |
切换分支 |
git checkout -b <name> |
创建并切换到该分支 |
git merge <name> |
将 <name> 分支合并到当前分支 |
git branch -d <name> |
删除分支(已合并) |
git branch -D <name> |
强制删除未合并的分支 |
8.2 合并冲突
当两个分支修改了同一文件的同一位置时,合并会产生冲突,需要手动解决。
步骤:
- Git 会在冲突文件中用
<<<<<<<、=======、>>>>>>>标记不同分支的内容。 - 编辑文件,删除标记,保留想要的内容。
- 执行
git add <file>标记为已解决。 git commit完成合并。
提示:合并前确保工作区干净(
git status无未提交修改),合并后及时提交。
8.3 分支管理策略
master分支:主分支,保持稳定可发布状态。dev分支:开发分支,日常开发在此进行。feature-xxx分支:临时功能分支,完成后合并回 dev 并删除。
推荐使用 git merge --no-ff 保留分支历史。
九、远程仓库
9.1 远程仓库类型
- GitHub:全球最大开源托管平台。
- Gitee(码云):国内常用,速度快。
- GitLab:企业自建私有仓库。
9.2 本地与远程仓库的关联
方式一:克隆远程仓库到本地
bash
git clone <远程仓库地址> [本地目录名]
例如:git clone https://github.com/username/repo.git
方式二:已有本地仓库,关联远程仓库
bash
git remote add origin <远程仓库地址>
origin 是远程仓库的别名,可自定义。
9.3 推送和拉取
bash
# 推送本地分支到远程(首次需指定上游分支)
git push -u origin master
# 后续推送
git push
# 拉取远程更新并合并到当前分支
git pull
# 拉取远程更新但只下载不合并
git fetch
重要 :提交前先
git pull,避免冲突。
9.4 SSH 认证(推荐)
使用 HTTPS 每次 push 需输入用户名密码,使用 SSH 可免密。
-
生成 SSH 密钥对:
bashssh-keygen -t rsa -C "your_email@example.com"一路回车,默认保存在
~/.ssh/id_rsa。 -
将公钥
~/.ssh/id_rsa.pub的内容添加到远程仓库的 SSH 公钥设置中(GitHub/Gitee 都在个人设置中)。 -
测试连接:
bashssh -T git@github.com # GitHub ssh -T git@gitee.com # Gitee
9.5 解决冲突
多人协作时,如果本地提交和远程提交有冲突,git push 会被拒绝。流程:
git pull拉取远程更新。- Git 自动合并或产生冲突,手动解决冲突。
git add .和git commit -m "resolve conflict"。git push。
十、忽略文件 .gitignore
项目中有些文件不需要 Git 管理(如编译产物、日志、本地配置),可以在仓库根目录创建 .gitignore 文件,写入忽略规则。
常见规则示例:
# 忽略所有 .class 文件
*.class
# 忽略 target 目录
/target/
# 忽略 .idea 目录
.idea/
# 不忽略特定文件
!important.log
注意:
.gitignore只能忽略未跟踪的文件。如果文件已被 Git 跟踪,需先git rm --cached移除跟踪。
十一、IDEA 集成 Git
11.1 配置 Git 路径
File -> Settings -> Version Control -> Git,设置 Path to Git executable 为 git.exe(例如 D:\application\Git\bin\git.exe)。
11.2 基本操作
- 初始化仓库 :
VCS -> Enable Version Control Integration选择 Git。 - Add :右键文件 →
Git -> Add。 - Commit :
Ctrl + K或VCS -> Commit。 - Push/Pull :
Ctrl + Shift + K/Ctrl + T。 - 查看历史 :右键文件 →
Git -> Show History。 - 分支管理 :右下角点击分支名 →
New Branch/Merge等。
11.3 忽略文件插件
安装 .ignore 插件,可生成常用语言的 .gitignore 模板。
十二、Git 可视化工具
除了命令行,也可使用 GUI 工具:
| 工具 | 特点 |
|---|---|
| Git GUI | Git 自带,功能简单 |
| SourceTree | 免费,支持 Windows/Mac,图形化分支显示 |
| TortoiseGit | Windows 资源管理器集成,文件图标状态提示 |
| GitHub Desktop | 官方出品,简洁易用 |
| IDEA 内置 | 与 IDE 结合紧密 |
十三、常用命令速查表
| 命令 | 说明 |
|---|---|
git init |
初始化本地仓库 |
git clone <url> |
克隆远程仓库 |
git add <file> |
添加文件到暂存区 |
git commit -m "msg" |
提交暂存区内容 |
git status |
查看状态 |
git diff |
查看差异 |
git log |
查看提交历史 |
git reset --hard <commit> |
回退到指定版本 |
git reflog |
查看所有操作记录 |
git branch |
查看分支 |
git checkout -b <branch> |
创建并切换分支 |
git merge <branch> |
合并分支 |
git branch -d <branch> |
删除分支 |
git remote add origin <url> |
关联远程仓库 |
git push -u origin master |
首次推送 |
git pull |
拉取并合并 |
git clone <url> |
克隆远程仓库 |
git stash |
暂存当前工作区(常用于切换分支) |
git stash pop |
恢复暂存的工作区 |
git tag <tagname> |
打标签 |
git tag |
查看标签 |
十四、常见问题
-
如何修改最近一次提交的注释?
bashgit commit --amend -m "新的注释" -
忘记
--global配置了用户信息,如何修改?bashgit config user.name "新名字" git config user.email "新邮箱" -
git pull总是提示合并,如何避免?使用
git pull --rebase保持提交历史线性。 -
如何放弃所有本地修改,强制同步远程?
bashgit fetch --all git reset --hard origin/master -
如何将本地分支推送到远程并设置关联?
bashgit push -u origin 分支名
十五、结尾
Git 是当今软件开发必备工具,掌握以下内容即可应对日常开发:
- 基本操作:
add,commit,status,diff,log - 版本管理:
reset,reflog - 分支操作:
branch,checkout,merge,conflict resolution - 远程协作:
clone,push,pull,fetch
建议新手在本地创建练习仓库,反复尝试各种命令,结合 git status 观察变化,逐步建立对 Git 工作流的理解。实际项目中务必养成"先 pull 再 push"的习惯,遇到冲突冷静解决即可。
csharp
今天这篇文章就到这里了,大厦之成,非一木之材也;大海之阔,非一流之归也。感谢大家观看本文
