跳转至

Git 操作速查手册 (DevOps / 个人开发版)

0. 全局配置 (一次性设置)

目的:从根源上杜绝 git pull 自动产生 "Merge branch" 的情况。

Bash

# 设置拉取时默认使用变基 (Rebase),保持历史线性
git config --global pull.rebase true

# (可选) 设置 fetch 时自动修剪远程已删除的分支
git config --global fetch.prune true

1. 日常开发流程

核心原则:本地可以随便乱写(commit "test", "fix"),但在推送到远程之前,必须整理成一个干净的提交。

A. 开始工作

Bash

# 确保当前分支是最新的
git checkout main
git pull
# 建议新建分支开发 (养成好习惯)
git checkout -b feature/新功能名称

B. 本地提交 (存档)

在本地开发时,不需要追求完美,随时保存进度。

Bash

git add .
git commit -m "临时保存: 正在调试xxx" 
# 再次修改后...
git commit -m "fix: 修复报错"

2. 提交前的“清洗” (Squash)

场景:本地有 10 个琐碎的 test 提交,准备 Push 前,将它们合并为 1 个正式提交。

⚠️ 常见误区:直接 Push 琐碎记录,导致远程历史脏乱差。

操作步骤

  1. 软重置 (最快方法)

    将指针回退到这波修改之前的状态,但保留文件修改

    Bash

    # HEAD~N 代表回退最近 N 次提交
    git reset --soft HEAD~5 
    # 或者找到乱改之前的 commit hash
    # git reset --soft a1b2c3d
    
  2. 重新提交

    此时 git status 会显示所有修改都在暂存区(绿色)。

    Bash

    git commit -m "feat: 完成了XXX模块适配"
    

3. 同步上游代码 (针对 Fork 仓库)

场景:原作者 (Upstream) 更新了代码,你需要同步,但不想产生分叉。

⚠️ 常见误区:在 VS Code 点击“同步”按钮,或直接 git pull (在未配置 rebase 时),导致产生 Merge branch 'main' of... 提交。

标准操作 (Rebase 模式)

  1. 拉取上游更新

    Bash

    git fetch upstream
    
  2. 变基 (Rebase)

    将你的修改“拔下来”,等上游更新插进去后,再把你的修改“盖上去”。

    Bash

    git rebase upstream/main
    
    • 若有冲突:解决冲突 -> git add . -> git rebase --continue

4. 推送到远程

场景:将本地代码同步到你的 GitHub 仓库。

常规推送

如果是新分支,或只是增加了新提交(没修改历史):

Bash

git push

强制推送 (Force Push)

场景:你执行过 reset (清洗历史) 或 rebase (变基) 操作后,本地历史与远程不一致。

Bash

# ⚠️ 警告:仅在确定只有你一个人使用该分支时使用
git push -f

5. 常见误操作与急救

🛑 误操作 1:VS Code 自动同步导致 Merge

  • 现象:点了 VS Code 左下角那个循环箭头,结果多了一个 "Merge branch" 提交。

  • 原因:VS Code 默认行为是 git pull --merge

  • 修正

    1. git reset --soft HEAD~1 (撤销那个合并提交,保留代码)。

    2. 改为在终端执行 git pull --rebase

🛑 误操作 2:Force Push 覆盖了同事的代码

  • 现象:多人协作分支,你 push -f 后同事代码没了。

  • 原则绝对禁止对公共分支(如公司项目的 devmain)进行 git push -f

  • 修正:查看 git reflog 找回之前的提交,或者在群里道歉并手动找回代码。

🛑 误操作 3:改乱了想重来

  • 场景:Rebase 失败,或者代码改得一团糟,想回到上游最新状态(放弃本地修改)。

  • 修正

    Bash

    git fetch upstream
    # 警告:这会丢弃所有本地未提交的修改
    git reset --hard upstream/main
    

6. 极简速查表 (Cheat Sheet)

目的 命令 备注
同步上游 git pull --rebase upstream main 禁止使用普通的 git merge
整理提交 git reset --soft HEAD~N 将最近 N 次提交合并为 1 次
强制覆盖 git push -f 修改历史后必须使用
后悔药 git reflog 查看所有操作记录,找回丢失的 commit
放弃修改 git checkout . 丢弃工作区所有未提交的改动
将本地修改上浮 git reset --soft upstream/main