Git从0手把手实战指南 | 新手到高手完整教程(安装、配置、分支、协作全覆盖)

48次阅读
没有评论

序言:认识 Git

Git 是一个开源的分布式版本控制系统,用于高效管理文件变更(尤其是代码),记录每一次修改历史,支持多人协作开发。

Git 优势

  • 版本追溯:定位任意版本的代码差异(如 git diff);
  • 分支协作:多人并行开发不冲突(分支创建 / 合并);
  • 安全备份:本地 + 远程仓库双重保障,数据永不丢失。

一句话总结:Git = 文件变更的时光机 + 团队协作的桥梁 + 代码安全的守护者

1. 启程 – 安装与初体验

 1.1 踏上 Git 之旅 – 下载与安装

(1)官方下载: 

        下载地址Git – Downloads(以 windows 为例)

Git 从 0 手把手实战指南 | 新手到高手完整教程(安装、配置、分支、协作全覆盖)

(2)安装向导:

        下载完毕后双击 exe 文件,我这里是 Git-2.40.1-64-bit 版本,以下界面可以按自己的需求选择,也可以一路按照默认的 next 即可。

Git 从 0 手把手实战指南 | 新手到高手完整教程(安装、配置、分支、协作全覆盖)
Git 从 0 手把手实战指南 | 新手到高手完整教程(安装、配置、分支、协作全覆盖)

(3)验证安装: 

安装完毕后,打开 Git Bash ,  执行以下命令验证安装,显示版本号证明没有问题

$ git --version
# 执行结果
git version 2.40.1.windows.1

 1.2 第一次亲密接触 – 基础配置与仓库创建

 (1)亮明身份:  配置全局用户信息

# 配置 user.name user.email 建议这里的 user.email 使用真实邮箱
$ git config --global user.name " 你的用户名 "​
$ git config --global user.email " 你的邮箱地址 "
 
# 查看 是否生效
$ cat .gitconfig
Git 从 0 手把手实战指南 | 新手到高手完整教程(安装、配置、分支、协作全覆盖)

(2)选择你的编辑器(可选): 配置默认文本编辑器 (如 VS Code, 不配置一般为 vim)

# 配置 VS Code
$ git config --global core.editor "code --wait"
 
# 查看全局配置的文本编辑器
$ git config --global core.editor
 
# 执行结果
code --wait

(3)初始化!创建你的第一个 Git 仓库

# 仓库初始化
$ git init
# 执行结果
Initialized empty Git repository in C:/Users/17461/learn/.git/
 
# 观察隐藏的 .git 文件夹 - Git 的“大脑”
$ cat .git/config
# 执行结果说明
[core]
    repositoryformatversion = 0  # 仓库格式版本(固定为 0)
    filemode = false              # 记录文件权限变化(Linux/macOS 常用,Windows 通常为 false)
    bare = false                 # 是否为裸仓库(false 表示常规仓库,有工作区)
    logallrefupdates = true      # 记录所有引用(分支、标签)的更新日志
    ignorecase = true            # 是否忽略文件名大小写(Windows/macOS 常见)
    editor = code --wait         # 当前仓库单独配置的默认文本编辑器(覆盖全局)

(4)初窥状态:

  • 未跟踪状态:通常位于 Untracked files: 标题下方,并使用 红色 文字显示,尚未被 Git 仓库管理
  • 已暂存状态:通常位于 Changes to be committed: 标题下方,并使用 绿色 文字显示,已经通过 git add 命令添加到了暂存区

# 1. 新建一个测试文件
$ vi test.txt
 
# 保存后查看状态
$ git status
 
# 将文件添加至暂存区
$ git add test.txt
Git 从 0 手把手实战指南 | 新手到高手完整教程(安装、配置、分支、协作全覆盖)
Git 从 0 手把手实战指南 | 新手到高手完整教程(安装、配置、分支、协作全覆盖)

2. 核心引擎 – 提交、历史与工作流

2.1 理解 Git 的“魔法”– 工作区、暂存区与仓库

(1)工作区 (Working Directory)

  • 你的编辑沙盒:直接看到的项目文件
  • 状态
    ✅ 未跟踪文件(新文件)
    ✅ 已修改未暂存(改动的文件)
    ⚠️ 所有变动 尚未被 Git 记录

(2)  暂存区 (Staging Area)

  • 提交的预演台git add 后的文件存放区
  • 核心作用
    ✨ 精准筛选要提交的内容(文件 / 代码块)
    ✨ 构建 原子化提交(避免混杂修改)
  • ⚡️ 临时存储 → 不 commit 则不会永久保存

(3)版本库 (Repository)

  • 历史保险箱.git 目录下的数据库
  • 核心能力
    🔒 永久存储提交(git commit 的快照)
    🔄 记录分支 / 标签等完整历史
  • ⚡️ 数据不可篡改 → 只增不减的提交链

(4)Git 三大核心区域的最精简概括

Git 从 0 手把手实战指南 | 新手到高手完整教程(安装、配置、分支、协作全覆盖)

 2.2 记录你的足迹 – 添加(git add)与提交(git commit)

(1)添加(git add)

  git add 是将工作区的变更(新增、修改、删除)添加到 暂存区 的核心命令,是提交前的“预备动作”,确保需要记录的变更被 Git 跟踪。

# 仅将指定文件的当前变更(修改 / 新增 / 删除)加入暂存区,其他文件不受影响。
  git add <filename>
 
# 添加当前目录(包括子目录)下的所有新增文件和已跟踪文件的修改 / 删除,但不包括被删除的未跟踪文件。
  git add .
 
# 添加所有变更,包括新增文件、已跟踪文件的修改 / 删除、被删除的未跟踪文件,覆盖范围比 git add . 更全面。
  git add -A(或 git add --all)

 (2)  提交(git commit)

  git commit  将暂存区的变更提交到 本地仓库,生成一个不可修改的历史节点,是 Git 记录项目历史的核心操作。

# 将暂存区的所有变更打包成一个“提交记录”,存入本地仓库,同时生成唯一标识(SHA-1 哈希值)。
  git commit -m " 清晰、有意义的提交说明 "

(3)总结:

  git add  负责“选中要提交的内容”,git commit  负责“将选中内容存档为历史节点”,两者配合完成本地代码的版本记录,是 Git 工作流的基础。

  2.3 时光回溯 – 查看历史与差异(git diff)

 (1)翻阅历史日志: git log – 查看提交记录 (常用选项:--oneline--graph--pretty)

# 简洁模式,每条提交仅显示哈希值前 7 位和提交说明,适合快速浏览历史。
  git log --oneline
 
# 以图形化方式展示分支合并历史,直观呈现分支关系(如 * 表示提交,| 表示分支线)。
  git log --graph
# 自定义输出格式,常用 --pretty=fuller 显示完整提交信息(包括作者、提交者、时间戳),或 --pretty=format:"%h %an %s" 按需提取信息(%h 短哈希、%an 作者名、%s 提交说明)。
  git log --pretty=< 格式 >
 
# 以图形化线条展示所有分支的提交历史和合并关系
  git log --graph --oneline --all

(2)火眼金睛: git diff – 比较工作区、暂存区、不同提交之间的差异

# 比较工作区与暂存区
  git diff(查看未暂存的修改)。
# 比较暂存区与本地仓库
  git diff --staged(查看已暂存、待提交的修改)。
# 比较两个提交
  git diff <提交 1> < 提交2>(如 git diff a3f8d2e b7c9d01,查看两次提交的差异)。
# 比较两个分支
  git diff 分支 1  分支 2(如 git diff main dev,查看两分支最新提交的差异)。

(3)查看快照内容: git show – 查看特定提交的详细信息

# 查看最新提交
  git show(默认显示  HEAD  指向的最新提交)。
# 查看指定提交
  git show <提交哈 >(如 git show a3f8d2e,显示该提交的详细变更)。
# 查看标签对应的提交
  git show <标签 >(如 git show v1.0,查看标签指向的提交详情)。

3. 协作基石 – 分支与合并

   3.1 开辟平行宇宙 – 分支(Branching)

 (1)创建分支

# 创建分支:
  git branch <分支 >(如 git branch feature/login)
 
# 切换分支:
  git checkout <分支 >(如 git checkout dev)
 
# 新版切换分支:
  git switch <分支 >(更直观,如 git switch main)
 
# 创建并切换:
  git switch -c <新分支 >(一步完成创建  +  切换)

(2)查看分支

# 显示本地所有分支,当前分支前标 *
  git branch
# 显示本地 + 远程所有分支(远程分支以 remotes/ 开头)
  git branch -a

 3.2 合而为一 – 合并(Merging)

# 将指定分支的代码整合到当前分支
  git merge <待合并分 >

4. 连接世界 – 远程仓库与协作

 4.1 架起桥梁 – 配置远程仓库(Remote)

 (1)什么是远程仓库?

远程仓库是托管在网络服务器上的 Git 仓库(如 GitHub、GitLab、Gitee 等平台),主要作用:

  • 作为代码共享与协作的中央枢纽,方便多人同步代码;
  • 提供代码备份,防止本地代码丢失;
  • 支持团队成员基于远程仓库进行协同开发(如提交、拉取、评审代码)。

 (2)配置远程仓库 ssh 公钥(无需每次输入账号密码)

#  生成密钥对
   ssh-keygen -t ed25519 -C " 建议与远程平台账号关联的邮箱 "
 
#  查看并复制公钥内容
   cat ~/.ssh/id_ed25519.pub
Git 从 0 手把手实战指南 | 新手到高手完整教程(安装、配置、分支、协作全覆盖)

(3)关联远程仓库

# 将本地仓库与远程仓库关联
  git remote add <远程名 > <仓库地 >
# 建立本地仓库与远程仓库的映射,后续可通过 origin 指代该远程仓库。
  git remote add origin https://gitee.com/yourname/yourrepo.git

(4)查看远程仓库

# 列出当前仓库关联的所有远程仓库,包括名称和对应的 fetch(拉取)、push(推送)地址。
  git remote -v(-v 表示显示详细地址)

 4.2 推送与拉取 – 同步你的工作

 (1)克隆(Clone): 

# 获取完整项目 (git clone) - 初始化远程关联的快捷方式
  git clone https://gitee.com/yourname/yourrepo.git

(2)获取他人成果: git pull = git fetch + git merge

  • 详解 git fetch (获取远程更新但不自动合并)

# 获取远程仓库 origin 的所有更新
  git fetch origin  
 
# 仅获取远程 main 分支的更新
  git fetch origin main  
  • 详解 git pull (获取并自动尝试合并到当前分支)

# 对比本地当前分支与远程 main 的差异
  git diff origin/main 
 
# 手动将远程更新合并到当前分支
  git merge origin/main 

(3)上传你的杰作

# 第一次推送加 -u 建立追踪
  git push -u origin 
 
# 后续推送简化
  git push
 
# 推送到仓库的哪个分支(dev master)
  git push github(仓库别名) main(分支)

5. 锦上添花与排雷

   5.1 后悔药?– 撤销与重置 (谨慎使用!)

(1)撤销工作区修改:git checkout -- < 文件 >

  • 作用:丢弃工作区中指定文件的未暂存修改,恢复到最近一次提交或暂存的状态。
  • 示例

# 撤销对 test.txt 的本地修改。
  git checkout -- test.txt

(2)撤销暂存区修改:git reset HEAD < 文件 >  或  git restore --staged < 文件 >

  • 作用:将已用 git add 暂存的文件从暂存区撤回(回到“未暂存”状态),不影响工作区内容。
  • 示例

# 传统:
  git reset HEAD  test.txt
# 新版:
  git restore --staged  test.txt
  • 适用场景:误将文件加入暂存区,需重新选择暂存内容。

(3)修改最新提交:git commit --amend

  • 作用:修改最近一次提交的注释,或补充漏掉的文件(需先 git add 未提交的文件)。
  • 操作

# 仅改注释:执行命令后编辑新注释,保存即可。补充文件:
  git add 漏掉的文件 
  git commit --amend。
  • 注意:会覆盖最新提交的哈希值,若该提交已推送到远程,需强制推送(git push -f),谨慎使用。

   (4)回退提交:git reset  与  git revert

git reset <>(修改历史,有风险)
  • 作用:将当前分支回退到指定版本,根据参数控制回退范围:
    • --soft:仅回退提交记录,暂存区和工作区不变(可重新提交)。
    • --mixed(默认):回退提交记录和暂存区,工作区不变(需重新 git add)。
  • 风险:修改历史记录,若回退的提交已推送到远程,需强制推送,可能影响协作。

git revert <>(安全回退)
  • 作用 :创建一个 新提交,抵消指定旧提交的修改,不改变原有历史记录。
  • 优势:安全保留完整历史,适合已推送至远程的提交回退,不影响协作。
  • 示例

# 生成新提交撤销 a1b2c3d 的修改。
  git revert a1b2c3d 

附录:常用 Git 命令速查表

一、环境配置

命令 作用 示例
git –version 验证安装 git --version
git config –global user.name “ 名字 ” 设置全局用户名 git config --global user.name "John"
git config –global user.email “ 邮箱 ” 设置全局邮箱 git config --global user.email "[email protected]"
git config –global core.editor “ 编辑器 ” 设置默认文本编辑器 git config --global core.editor "code --wait"

二、本地仓库操作

命令 作用 示例
git init 初始化新仓库 git init
git status 查看工作区 / 暂存区状态 git status
git add < 文件> 添加文件到暂存区 git add index.html
git add . 添加所有修改到暂存区 git add .
git commit -m “ 说明 ” 提交到本地仓库 git commit -m "初始化项目"
git log 查看提交历史 git log --oneline --graph
git diff 查看工作区与暂存区差异 git diff

三、分支与合并

命令 作用 示例
git branch 查看本地分支 git branch
git branch < 分支名> 创建新分支 git branch feature-login
git checkout < 分支名> 切换分支 git checkout main
git switch < 分支名> (推荐) 切换分支 git switch feature
git merge < 分支名> 合并分支到当前分支 git merge feature
git branch -d < 分支名> 删除分支 git branch -d fix-bug
四、远程仓库协作
命令 作用 示例
git remote add < 别名> <URL> 关联远程仓库 git remote add origin https://...
git clone <URL> 克隆远程仓库 git clone https://github.com/xxx.git
git push -u < 远程> < 分支> 首次推送分支 git push -u origin main
git push 推送更改(已关联分支) git push
git pull 拉取远程更新(自动合并) git pull origin main
git fetch 仅获取远程更新(不合并) git fetch
五、撤销与修复
命令 作用 风险等级
git restore < 文件> 撤销工作区修改 ⚠️ 覆盖本地更改
git restore –staged < 文件> 从暂存区撤回文件 安全
git commit –amend 修改最新提交(信息 / 内容) 低风险
git reset –soft HEAD~1 撤销提交但保留更改 中风险
git reset –hard HEAD~1 彻底丢弃最近提交 ⚠️️ 高危(数据丢失)
git revert < 提交 ID> 创建新提交来撤销旧提交 安全
六、高级维护
命令 作用 示例
git tag v1.0 创建版本标签 git tag v1.0
git stash 临时储藏修改 git stash
git stash pop 恢复储藏的修改 git stash pop
git rm –cached < 文件> 从 Git 移除文件(保留本地) git rm --cached .env
git reflog 查看操作历史(救命命令) git reflog
正文完
 0
评论(没有评论)