Git 操作指南

Git 操作指南

一、基础概念

1. Git 的四个区域

复制代码
工作区 (Working Directory)    # 你正在编辑的文件
    ↓ git add
暂存区 (Staging Area)        # 准备提交的修改
    ↓ git commit
本地仓库 (Local Repository)  # .git 目录,你的提交历史
    ↓ git push
远程仓库 (Remote Repository) # GitHub、GitLab 等

2. 三种状态

  • Modified:文件被修改,但还没暂存
  • Staged:文件已暂存,等待提交
  • Committed:修改已提交到本地仓库

二、基础操作

1. 初始化与克隆

bash 复制代码
# 初始化本地仓库
git init

# 克隆远程仓库
git clone https://github.com/user/repo.git

# 克隆指定分支
git clone -b dev https://github.com/user/repo.git

2. 添加与提交

bash 复制代码
# 查看当前状态
git status

# 查看具体修改
git diff

# 添加单个文件到暂存区
git add index.html

# 添加所有修改
git add .

# 提交到本地仓库
git commit -m "提交说明"

# 添加并提交(一次性完成)
git commit -am "提交说明"   # 仅适用于已跟踪的文件

3. 查看提交历史

bash 复制代码
# 查看详细提交历史
git log

# 简略版(一行一个提交)
git log --oneline

# 查看最近5次提交
git log -5 --oneline

# 查看所有分支的提交
git log --all --oneline

# 可视化查看分支图
git log --graph --oneline --all

三、分支操作

1. 创建与切换

bash 复制代码
# 查看本地分支
git branch

# 查看所有分支(包括远程)
git branch -a

# 创建新分支
git branch feature-login

# 切换分支
git checkout feature-login

# 创建并切换(简写)
git checkout -b feature-login

# 切换到上一个分支
git checkout -

2. 删除与重命名

bash 复制代码
# 删除已合并的分支
git branch -d feature-login

# 强制删除分支
git branch -D feature-login

# 重命名当前分支
git branch -m new-name

3. 合并分支

bash 复制代码
# 切换到主分支
git checkout main

# 合并 feature-login 分支
git merge feature-login

# 取消 merge(如果有冲突想重来)
git merge --abort

四、远程操作

1. 添加与查看远程仓库

bash 复制代码
# 查看远程仓库
git remote -v

# 添加远程仓库
git remote add origin https://github.com/user/repo.git

# 重命名远程
git remote rename origin upstream

2. 拉取与推送

bash 复制代码
# 拉取远程代码
git fetch origin

# 拉取并合并
git pull origin main

# 拉取并变基(推荐,保持直线历史)
git pull --rebase origin main

# 推送本地分支到远程
git push origin feature-login

# 推送并设置上游分支
git push -u origin feature-login

# 删除远程分支
git push origin --delete old-branch

3. 本地与远程差异

bash 复制代码
# 先获取远程最新信息
git fetch origin

# 查看本地没有、远程有的提交
git log HEAD..origin/main

# 查看远程有、本地没有的提交
git log origin/main..HEAD

# 查看文件差异
git diff HEAD origin/main

五、回滚操作

1. 工作区回滚

bash 复制代码
# 撤销单个文件的修改
git checkout -- index.html

# 撤销所有文件的修改
git checkout -- .

# 简写
git restore index.html
git restore .

2. 暂存区回滚

bash 复制代码
# 撤销暂存(把暂存区的文件放回工作区)
git reset HEAD index.html

# 简写
git restore --staged index.html

3. 提交回滚

bash 复制代码
# 回滚到上一个提交(保留修改在工作区)
git reset --soft HEAD~1

# 回滚到上一个提交(保留修改在暂存区)
git reset --mixed HEAD~1   # 默认是这个

# 回滚到上一个提交(丢弃所有修改)⚠️危险
git reset --hard HEAD~1

# 回滚到指定提交
git reset --hard abc1234

# 撤销最后一次提交,创建一个新的提交来还原
git revert HEAD

4. 远程回滚

bash 复制代码
# 强制推送(覆盖远程)⚠️
git push --force origin main

# 安全模式:只允许快进推送
git push --force-with-lease origin main

六、Rebase 变基

1. 什么是 Rebase

把当前分支的提交"移动"到另一个分支的后面,形成直线历史。

2. 基本用法

bash 复制代码
# 场景:你的分支从 main 分支分出来,现在 main 有新提交了

# 之前:
# main:     A -- B -- C
#               \
# 你的分支:       D -- E

# 你执行:
git checkout feature-login
git rebase main

# 之后:
# main:     A -- B -- C
#                    \
# 你的分支:           D' -- E'

3. 交互式 Rebase(整理提交)

bash 复制代码
# 修改最近3个提交
git rebase -i HEAD~3

# 会打开编辑器,可以:
# - pick: 保留这个提交
# - squash: 合并到上一个提交
# - reword: 修改提交说明
# - drop: 删除这个提交

4. Rebase vs Merge

场景 推荐
拉取远程最新代码 git pull --rebase
合并别人的功能分支 git merge
整理本地提交记录 git rebase -i
已推送的分支 不要 rebase

5. 取消 Rebase

bash 复制代码
# 取消正在进行的 rebase
git rebase --abort

七、暂存操作(Stash)

1. 暂存修改

bash 复制代码
# 暂存当前所有修改
git stash

# 暂存并添加说明
git stash save "临时保存:修复bug"

# 暂存未跟踪的文件
git stash -u

# 暂存所有文件(包括忽略的)
git stash -a

2. 恢复暂存

bash 复制代码
# 恢复最新的暂存(不删除)
git stash apply

# 恢复最新的暂存(删除)
git stash pop

# 恢复指定的暂存
git stash apply stash@{2}

# 查看暂存列表
git stash list

3. 删除暂存

bash 复制代码
# 删除单个暂存
git stash drop stash@{0}

# 清空所有暂存
git stash clear

八、标签操作

bash 复制代码
# 创建轻量标签
git tag v1.0.0

# 创建附注标签(推荐)
git tag -a v1.0.0 -m "版本1.0.0"

# 查看所有标签
git tag

# 查看标签详情
git show v1.0.0

# 推送标签到远程
git push origin v1.0.0

# 推送所有标签
git push origin --tags

# 删除本地标签
git tag -d v1.0.0

# 删除远程标签
git push origin --delete v1.0.0

九、常见问题处理

1. 冲突处理

bash 复制代码
# 冲突时,先查看冲突文件
git status

# 手动解决冲突后,添加并提交
git add index.html
git commit -m "解决冲突"

2. 修改最后一次提交

bash 复制代码
# 漏提交了文件或提交说明写错了
git add forgotten-file.html
git commit --amend

# 会进入编辑器,可以修改提交说明

3. 查看谁修改了某一行

bash 复制代码
git blame index.html

4. 忽略文件

.gitignore 文件中添加:

复制代码
node_modules/
dist/
*.log
.env

十、实战场景

场景1:开发一半,要临时切换分支

bash 复制代码
# 暂存当前修改
git stash

# 切换分支处理紧急bug
git checkout bugfix-branch
# ... 修复 bug ...
git commit -m "修复紧急bug"
git push

# 切回来继续开发
git checkout feature-branch
git stash pop

场景2:代码写乱了,想重头来

bash 复制代码
# 撤销所有修改,回到最近一次提交
git reset --hard HEAD

# 如果已经提交,想完全清除
git reset --hard HEAD~1

场景3:误删了分支,想恢复

bash 复制代码
# 找到删除前的 commit
git reflog

# 基于那个 commit 创建新分支
git checkout -b recovered-branch abc1234

场景4:推送被拒绝(远程比本地新)

bash 复制代码
# 方案1:rebase 方式(推荐)
git fetch origin
git pull --rebase origin main

# 方案2:merge 方式
git pull origin main

# 方案3:强制推送(慎用)
git push --force origin main

场景5:撤销已经 push 的提交

bash 复制代码
# 创建一个新提交来撤销
git revert abc1234

# 推送
git push origin main

十一、Git 配置

bash 复制代码
# 查看所有配置
git config --list

# 设置用户名
git config --global user.name "Your Name"

# 设置邮箱
git config --global user.email "your@email.com"

# 设置别名(简化命令)
git config --global alias.st status
git config --global alias.co checkout
git config --global alias.br branch
git config --global alias.lg "log --oneline --graph --all"

# 设置默认分支名
git config --global init.defaultBranch main
相关推荐
哲霖软件2 小时前
非标机械行业订单变更下的成本管控困境及数字化解决方案
大数据·非标自动化·机械设备erp
数字供应链安全产品选型3 小时前
2026年4月22日:重塑智能体防御范式——灵境AIDR如何以“五大支柱”终结Hermes Agent自进化带来的安全焦虑?
大数据
ClouGence3 小时前
从 OLTP 到 OLAP:Spanner 到 StarRocks 架构演进与实现
大数据·数据库·starrocks·olap·dba·oltp·spanner
Full Stack Developme3 小时前
Hutool TreeUtil 教程
大数据·windows
科技AI训练师3 小时前
2026工业风机行业观察:英飞风机在中高端通风排烟领域表现
大数据·人工智能
大大大大晴天️3 小时前
Flink技术实践-Flink指标监控全景指南
大数据·flink
蓝眸少年CY3 小时前
Canal - 数据同步
大数据·canal
中科天工3 小时前
中科天工智能包装技术是什么?
大数据·人工智能
Chuer_4 小时前
AI For BI是什么?一文拆解AI For BI应用落地!
大数据·数据库·人工智能·安全·数据分析·甘特图