三亩地 三亩地SAN MU DI · CODE DIARY
ARTICLE DETAIL

日记详情

真实记录编程学习的某一天,欢迎挑你感兴趣的翻一翻。

《Git 完整入门教程(零基础到实战)》

《Git 完整入门教程(零基础到实战)》

Git 完整入门教程(零基础到实战)

一、Git 核心概念

1. 什么是 Git

分布式版本控制系统,用于跟踪文件修改、多人协作、版本回退、代码备份,所有代码本地都有完整仓库,无需联网即可操作。

2. 三大区域

  1. 工作区(Working Directory):本地文件夹,你编辑代码的地方
  2. 暂存区(Stage/Index):临时存放待提交修改,add命令存入
  3. 本地仓库(Repository):永久保存版本快照,commit存入
  4. 远程仓库(Github/Gitee/GitLab):云端共享仓库

3. 核心名词

  • commit:版本快照,每次提交生成唯一哈希值
  • branch:分支,并行开发互不干扰
  • master/main:默认主分支(新版 Git 默认 main)
  • HEAD:指针,指向当前所在版本/分支
  • remote:远程仓库地址

二、安装与配置

1. 下载安装

官网:https://git-scm.com/
Windows:安装后打开Git Bash
Mac:brew install git
Linux:apt install git

2. 全局基础配置(仅第一次配置)

# 设置用户名(提交记录显示)gitconfig--globaluser.name"你的名字"# 设置邮箱(和Github/Gitee注册邮箱一致)gitconfig--globaluser.email"你的邮箱"# 查看全局配置gitconfig--global--list# 查看单条配置gitconfig user.name

三、本地仓库基础操作(核心命令)

方式1:新建项目初始化 Git

# 进入项目文件夹cd/你的项目路径# 初始化git仓库,生成隐藏文件夹 .gitgitinit

方式2:拉取远程已有项目到本地

# 克隆远程仓库到本地gitclone shturl.cc/IpuQuTE2ZckLNunKsDB# 克隆并重命名本地文件夹gitclone https://github.com/xxx/xxx.git my-project

3. 查看文件状态

# 查看所有文件修改状态(最常用)gitstatus# 精简版状态gitstatus-s

标识说明:

  • 红色:工作区未加入暂存
  • 绿色:已加入暂存,等待提交

4. 添加文件到暂存区 git add

# 添加单个文件gitaddindex.html# 添加全部修改文件(不含删除)gitadd.# 添加所有文件(包括删除的文件)gitadd-A# 添加指定后缀文件gitadd*.js

5. 提交暂存区到本地仓库 git commit

# 基础提交,-m 填写版本说明(必须写清楚修改内容)gitcommit-m"首页新增轮播组件"# 跳过add,直接提交所有已跟踪文件修改(不包含新增文件)gitcommit-am"修复登录bug"

6. 查看提交日志

# 完整日志gitlog# 简洁单行日志gitlog--oneline# 图形化分支日志gitlog--oneline--graph# 查看指定文件修改记录gitlog index.js

四、撤销、回退操作(高频踩坑)

1. 撤销工作区修改(未add)

文件改坏了,恢复成上次提交的版本

# 单个文件gitcheckout -- index.html# 全部文件gitcheckout --.

2. 取消暂存(已add,未commit)

文件add错了,移出暂存区,回到工作区

gitreset HEAD index.html# 全部文件取消暂存gitreset HEAD.

3. 版本回退(已commit)

# 回退到上一个版本,保留本地修改gitreset HEAD^# 回退到指定commit哈希值gitreset 5ac213# 彻底回退,清空工作区所有修改(谨慎!)gitreset--hardHEAD^gitreset--hard5ac213
  • HEAD^:上一个版本
  • HEAD~2:往前2个版本

4. 查看所有历史(包括被回退删除的commit)

gitreflog

五、分支操作(多人协作核心)

1. 分支基础命令

# 查看本地所有分支,* 代表当前分支gitbranch# 查看远程所有分支gitbranch-r# 创建新分支gitbranch dev# 切换到dev分支gitcheckout dev# 创建并直接切换分支(最常用)gitcheckout-bfeature/login# 删除本地分支(分支已合并才能删)gitbranch-ddev# 强制删除未合并分支gitbranch-Ddev

2. 合并分支 merge

场景:开发分支写完,合并到主分支 main

# 1. 切换到主分支gitcheckout main# 2. 合并dev分支代码到maingitmerge dev
冲突解决

两个分支修改了同一文件同一行,会提示冲突:

  1. 打开冲突文件,删除<<<<<< HEAD=====>>>>>> 分支名标记
  2. 保留需要的代码,保存文件
  3. 重新git add .+git commit -m "解决合并冲突"

3. 变基 rebase(整洁提交记录)

# 在dev分支,把main最新代码合并过来,线性提交记录gitcheckout devgitrebase main

六、远程仓库(Github/Gitee 上传拉取)

1. 绑定远程仓库

# 添加远程仓库,origin是远程仓库默认别名gitremoteaddorigin shturl.cc/3pl8KsCRNnbt15LLGxOz# 查看已绑定远程gitremote-v# 修改远程地址(仓库迁移时用)gitremote set-url origin 新仓库地址# 删除远程绑定gitremote remove origin

2. 推送本地代码到远程 git push

# 首次推送,关联本地main分支和远程maingitpush-uorigin main# 后续直接推送gitpush origin main# 推送所有本地分支gitpush--allorigin# 推送标签gitpush origin--tags

3. 拉取远程最新代码

# 拉取远程代码并自动合并(=fetch + merge)gitpull origin main# 仅下载远程代码,不合并gitfetch origin# 手动合并gitmerge origin/main

七、忽略文件 .gitignore

项目根目录新建.gitignore,写入不需要Git跟踪的文件,示例模板:

# 系统缓存 .DS_Store Thumbs.db # 依赖文件夹 node_modules/ venv/ dist/ build/ # 环境配置、密钥 .env *.pem config.local.js # 日志 *.log # IDE缓存 .idea/ .vscode/ *.swp

注意:文件已经被git跟踪后,再写进ignore不会生效,需要先删除缓存:
git rm --cached 文件名

八、标签 tag(版本发布 v1.0.0)

# 创建轻量标签gittag v1.0.0# 创建带说明的标签gittag-av1.0.0-m"正式1.0版本发布"# 查看所有标签gittag# 推送单个标签到远程gitpush origin v1.0.0# 推送全部标签gitpush origin--tags# 删除本地标签gittag-dv1.0.0# 删除远程标签gitpush origin :v1.0.0

九、多人协作完整标准流程

  1. 拉取主分支最新代码
gitcheckout maingitpull origin main
  1. 创建开发分支开发功能
gitcheckout-bfeature/register
  1. 写完代码提交本地
gitadd.gitcommit-m"完成注册页面"
  1. 推送开发分支到远程
gitpush-uorigin feature/register
  1. 远程仓库提交 Pull Request/Merge Request,代码评审
  2. 评审通过后合并到 main 分支
  3. 本地切换main,拉取合并后的最新代码
gitcheckout maingitpull origin main

十、常用高频速查表

功能命令
初始化仓库git init
克隆仓库git clone 地址
查看状态git status
加入暂存git add .
提交版本git commit -m “备注”
查看日志git log --oneline
创建切换分支git checkout -b xxx
合并分支git merge xxx
绑定远程git remote add origin 地址
推送代码git push origin main
拉取代码git pull origin main
撤销工作区修改git checkout – .
彻底回退版本git reset --hard 哈希

十一、常见问题解决

  1. 推送报错:远程有本地没有的代码
    git pull拉取合并,再 push
  2. 忘记写commit备注,修改上一次提交
    git commit --amend
  3. 本地多提交合并成一条(提交MR前整理记录)
    git rebase -i HEAD~3合并最近3次提交
  4. 误提交敏感文件到仓库
    git filter-repo彻底清除历史记录

附录一、通用 .gitignore 完整模板(直接复制保存为项目根目录.gitignore

# 系统文件 .DS_Store .DS_Store? ._* .Spotlight-V100 .Trashes ehthumbs.db Thumbs.db # IDE 缓存 .idea/ .vscode/ *.suo *.ntvs* *.njsproj *.sln *.sw? *.swp *~ # 前端 Node node_modules/ npm-debug.log* yarn-debug.log* yarn-error.log* .pnpm-debug.log* dist/ build/ coverage/ .vercel .turbo # Python __pycache__/ *.pyc *.pyo *.pyd venv/ env/ *.env .env.local .env.development .env.production # Java target/ *.class *.jar *.war *.log .gradle build/ out/ # C/C++ cmake-build-*/ *.o *.exe *.dll *.so *.out # 日志 *.log logs/ # 密钥、配置 *.pem *.key secret.json config.local.yaml # 压缩包 *.zip *.rar *.7z *.tar.gz

附录二、Git 实操练习流程(跟着敲一遍就能吃透)

1. 初始化本地仓库

# 新建文件夹并进入mkdirgit-democdgit-demo# 初始化gitgitinit# 配置用户名邮箱(仅第一次执行)gitconfig user.name"test"gitconfig user.email"test@163.com"

2. 创建文件、跟踪提交

# 创建文件echo"hello git">index.txt# 查看状态(红色未暂存)gitstatus# 添加到暂存区gitaddindex.txt# 提交本地仓库gitcommit-m"第一次提交:新增index.txt"# 查看提交记录gitlog--oneline

3. 修改文件、二次提交

echo"add new line">>index.txtgitadd.gitcommit-m"更新文本内容"gitlog--oneline

4. 分支练习

# 创建并切换dev分支gitcheckout-bdevecho"dev分支内容">dev.txtgitadd.gitcommit-m"dev分支新增文件"# 切回主分支gitcheckout main# 合并dev到maingitmerge dev

5. 回退版本演示

# 查看历史记录,复制前面7位hashgitlog--oneline# 软回退(保留修改)gitreset HEAD^# 彻底清空修改回退# git reset --hard HEAD^

6. 关联远程仓库上传代码

  1. Gitee/Github 新建空仓库,复制仓库地址
# 绑定远程gitremoteaddorigin shturl.cc/aXMa9S8HauLqkUkKBYDJ6Zc6# 首次推送关联分支gitpush-uorigin main

附录三、高频小技巧

  1. 修改上一次提交备注
gitcommit--amend
  1. 清空所有未提交修改
gitcheckout --.
  1. 取消已add的文件
gitreset HEAD.
  1. 拉取远程代码不自动合并
gitfetchgitmerge origin/main

需要我把这份教程压缩成一页Git速记命令清单方便你保存吗?

← 返回列表