Git 核心指令速查手册

整理自 Acer Predator 开发实战,涵盖从基础到深度填坑的所有指令。

1. 仓库初始化与获取

初始化本地新仓库 git init
克隆云端仓库
SSH 推荐,需配置密钥
git clone git@github.com:用户名/仓库名.git
HTTPS 通用,需输入密码/Token
git clone https://github.com/用户名/仓库名.git
克隆指定分支
SSH
git clone -b 分支名 git@github.com:用户名/仓库名.git
HTTPS
git clone -b 分支名 https://github.com/用户名/仓库名.git

2. 提交工作流 (最常用)

查看当前状态 (检查哪些文件被修改) git status
添加文件到暂存区 所有文件 git add .
添加指定文件到暂存区 git add 文件名
提交到本地仓库 (务必带上详细说明) git commit -m "feat: 描述你的改动"
推送到云端 - 首次推送 首次必用 git push -u origin main
-u 参数的作用:设置上游(upstream)跟踪分支。执行后,本地 main 分支会与远程 origin/main 建立关联。
好处:之后可以直接使用 git pushgit pull,无需再指定远程和分支名。
推送到云端 - 后续推送 git push origin main
每次都需要明确指定远程仓库名 origin 和分支名 main
如果已经用 -u 设置过上游分支,可以简化为 git push
📊 git push -u 与 git push 对比
指令 使用场景 效果
git push -u origin main 首次推送 / 新建分支首次推送 推送 + 设置上游跟踪,之后可简写为 git push
git push origin main 日常推送(未设置上游时) 仅推送,每次都需写完整命令
git push 日常推送(已设置上游后) 自动推送到已关联的上游分支
从云端拉取最新代码 协作必备 git pull origin main
如果已设置上游分支,可简化为 git pull

3. 分支管理

查看所有分支 (本地) git branch
查看所有分支 (包含远程) git branch -a
创建新分支 git branch 分支名
切换分支 git checkout 分支名
创建并切换到新分支 推荐 git checkout -b 分支名
合并分支到当前分支 git merge 分支名
删除本地分支 git branch -d 分支名
删除远程分支 git push origin --delete 分支名
推送新分支到远程并设置上游 新分支首推 git push -u origin 分支名
创建新分支后首次推送时使用,会在远程创建同名分支并建立跟踪关系。

4. 远程仓库管理

查看当前关联的远程地址 git remote -v
关联远程仓库 (本地 init 后使用)
SSH
git remote add origin git@github.com:用户名/仓库名.git
HTTPS
git remote add origin https://github.com/用户名/仓库名.git
修改现有远程地址 (如仓库重命名后)
SSH
git remote set-url origin git@github.com:用户名/新仓库名.git
HTTPS
git remote set-url origin https://github.com/用户名/新仓库名.git
获取远程仓库更新 (不合并) git fetch origin
删除远程仓库关联 git remote remove origin
查看上游分支跟踪状态 git branch -vv
显示每个本地分支对应的远程跟踪分支,可以确认 -u 是否设置成功。

5. 查看历史与差异

查看提交历史 git log
查看简洁提交历史 推荐 git log --oneline
查看图形化分支历史 git log --oneline --graph --all
查看文件修改差异 (未暂存) git diff
查看已暂存的差异 git diff --staged

6. 撤销与回退 谨慎操作

撤销工作区修改 (未 add) git checkout -- 文件名
撤销暂存区 (已 add,未 commit) git reset HEAD 文件名
回退到上一次提交 (保留修改) git reset --soft HEAD^
回退到指定提交 危险 git reset --hard 提交ID
💊 修正最后一次提交 (后悔药机制)
在开发时,写错 Commit 信息(提交说明)是非常常见的情况。Git 提供了 --amend 参数,允许你修正最后一次提交的内容或说明。

--amend 的含义:"修改/修正",它不会产生新的提交记录,而是直接修改当前分支上最后一次的提交。
情况 1 描述错了,但还没推送到远程 (Local Only)

如果你刚刚执行完 git commit,还没执行 git push,这是最简单的修正方式。

git commit --amend -m "这是修正后正确的描述内容"
直接覆盖最后一次的提交说明,不会产生新的提交记录。
情况 2 描述错了,且已经推送到远程 (Already Pushed)

如果你已经执行了 git push,GitHub 网页上已经显示了错误的描述,修正起来会稍微复杂一些,因为这涉及到"修改历史"。

操作步骤:

  1. 第一步:本地修正 - 先在本地执行修正指令 git commit --amend -m "修正后的正确描述"
  2. 第二步:强制推送 - 由于本地的提交记录(Hash 值)已经改变,普通的 git push 会报错,必须使用"强力推送" git push --force origin main
⚠️ 重要警告:
--force 会覆盖远程仓库的历史。如果你在公司或团队合作开发,千万不要对公共分支使用强制推送,否则会把别人的代码弄丢!

适用场景:个人项目、个人分支、或确认没有其他人在使用该分支时。
📊 修正提交的两种情况对比
情况 操作指令 风险等级
未推送到远程 git commit --amend -m "新描述" 安全
已推送到远程 git commit --amend + git push --force 危险 会覆盖远程历史

7. 暂存工作区 (Stash)

暂存当前修改 (切换分支前) git stash
查看暂存列表 git stash list
恢复最近的暂存 git stash pop
恢复指定暂存 git stash apply stash@{0}

8. 深度填坑 (实战经验)

强制修正主分支名为 main (解决 Master 冲突) git branch -M main
解决 LF/CRLF 换行符警告 git config --global core.autocrlf true
强制推送 (覆盖远程) 危险 git push -f origin main
-f--force 的简写。仅在个人项目或确认安全时使用!
设置全局用户名 git config --global user.name "你的名字"
设置全局邮箱 git config --global user.email "你的邮箱"
查看所有配置 git config --list
忽略文件权限变化 git config core.fileMode false

← 返回学习日志首页