18 GIt

✨博客主页: 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 分支管理策略)
    • 九、远程仓库
    • [十、忽略文件 `.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 下载安装

安装时建议:

  • 选择 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 添加文件到仓库

  1. 在仓库目录下创建或修改文件,例如 readme.txt

  2. 将文件添加到暂存区:

    bash 复制代码
    git add readme.txt        # 添加单个文件
    git add .                 # 添加当前目录所有变化(包括新文件和修改)
  3. 将暂存区内容提交到仓库:

    bash 复制代码
    git 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 addgit commit 的状态:

bash 复制代码
git checkout -- <file>

注意:-- 很重要,没有它表示切换分支。

6.2 已 add 但未 commit

  1. 将文件从暂存区移除(但保留工作区修改):

    bash 复制代码
    git reset HEAD <file>
  2. 然后按工作区方式撤销。

或者直接:

bash 复制代码
git rm --cached <file>   # 仅从暂存区删除,工作区保留

6.3 已 commit 但未 push

使用版本回退(git reset --hard HEAD^)或修改最后一次提交:

bash 复制代码
git commit --amend   # 修改最后一次提交的说明或添加遗漏的文件

七、删除文件

  1. 从工作区和暂存区删除文件:

    bash 复制代码
    git rm <file>
  2. 提交删除操作:

    bash 复制代码
    git 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 合并冲突

当两个分支修改了同一文件的同一位置时,合并会产生冲突,需要手动解决。

步骤:

  1. Git 会在冲突文件中用 <<<<<<<=======>>>>>>> 标记不同分支的内容。
  2. 编辑文件,删除标记,保留想要的内容。
  3. 执行 git add <file> 标记为已解决。
  4. 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 可免密。

  1. 生成 SSH 密钥对:

    bash 复制代码
    ssh-keygen -t rsa -C "your_email@example.com"

    一路回车,默认保存在 ~/.ssh/id_rsa

  2. 将公钥 ~/.ssh/id_rsa.pub 的内容添加到远程仓库的 SSH 公钥设置中(GitHub/Gitee 都在个人设置中)。

  3. 测试连接:

    bash 复制代码
    ssh -T git@github.com   # GitHub
    ssh -T git@gitee.com    # Gitee

9.5 解决冲突

多人协作时,如果本地提交和远程提交有冲突,git push 会被拒绝。流程:

  1. git pull 拉取远程更新。
  2. Git 自动合并或产生冲突,手动解决冲突。
  3. git add .git commit -m "resolve conflict"
  4. 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 executablegit.exe(例如 D:\application\Git\bin\git.exe)。

11.2 基本操作

  • 初始化仓库VCS -> Enable Version Control Integration 选择 Git。
  • Add :右键文件 → Git -> Add
  • CommitCtrl + KVCS -> Commit
  • Push/PullCtrl + 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 查看标签

十四、常见问题

  1. 如何修改最近一次提交的注释?

    bash 复制代码
    git commit --amend -m "新的注释"
  2. 忘记 --global 配置了用户信息,如何修改?

    bash 复制代码
    git config user.name "新名字"
    git config user.email "新邮箱"
  3. git pull 总是提示合并,如何避免?

    使用 git pull --rebase 保持提交历史线性。

  4. 如何放弃所有本地修改,强制同步远程?

    bash 复制代码
    git fetch --all
    git reset --hard origin/master
  5. 如何将本地分支推送到远程并设置关联?

    bash 复制代码
    git 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 复制代码
今天这篇文章就到这里了,大厦之成,非一木之材也;大海之阔,非一流之归也。感谢大家观看本文
相关推荐
怣疯knight1 小时前
Git 本地分支关联远程分支 常用命令汇总
git
ANNENBERG2 小时前
git分支开发管理
git
坤坤藤椒牛肉面2 小时前
GIT的使用
git
w3296362712 小时前
使用 OpenCode 在 Windows 上加速安装 Playwright 的完整指南
windows·git
我家媳妇儿萌哒哒20 小时前
git:无法推送refs到远端。您可以试着运行“拉取”功能,整合您的更改。
git
驯龙高手_追风1 天前
Gitlab本地服务器搭建及配置-详细教程
git·github
czhc11400756631 天前
6.11:halcon,Sqlserver;项目sql连接;git
git·sql·sqlserver
炸炸鱼.1 天前
Git+Jenkins 基本使用:从入门到实战(知识点大全)
运维·git·jenkins
戴国进1 天前
git stash 用法详解
git