Git 常用命令速查与分支操作指南

1732 字
9 分钟
Git 常用命令速查与分支操作指南

[!abstract] 摘要 本文整理了 Git 日常高频命令的用法与分支管理的完整操作流程。面向二刷复习,注重快速上手和遗忘提醒。附带常见踩坑记录。

参考教程:CSDN Git 教程 | B 站:黑马程序员 Git 全套教程


1. 基本命令(重要/易忘)#

1.1 git init — 初始化仓库#

作用:在当前目录创建 .git 子藏目录,使其成为一个 Git 仓库。

Terminal window
# 在当前目录初始化
git init
# 指定目录名初始化
git init my-project
提示

执行后当前目录下会多出一个隐藏的 .git 文件夹,不要手动修改或删除它,它是 Git 的”大脑”。


1.2 git status — 查看工作区状态#

作用:查看当前哪些文件被修改、暂存、未跟踪,是最常用的”侦察兵”命令。

Terminal window
git status
# 简洁模式(一目了然)
git status -s
# 输出示例:
# M src/main.java ← 已暂存(绿色 M 在左列)
# M src/utils.java ← 已修改未暂存(红色 M 在右列)
# ?? temp.txt ← 未跟踪的新文件
状态标识速记
标识含义
??未跟踪(新文件)
A新增到暂存区
M已修改
D已删除
R重命名

1.3 git log — 查看提交历史#

作用:查看仓库的提交记录,默认按时间倒序。

Terminal window
# 基本查看
git log
# 单行简洁模式(最常用⭐)
git log --oneline
# 图形化分支结构(强烈推荐⭐⭐)
git log --oneline --graph --all
# 查看最近 N 条
git log -5
# 查看某文件的修改历史
git log -- path/to/file.java
# 搜索提交信息关键词
git log --grep="fix" --oneline
实用组合

习惯性使用 git log --oneline --graph --all,一张图看清所有分支的走向和合并情况。


1.4 git reset — 版本回退#

作用:将 HEAD 指针移动到指定提交,用于撤销提交或回退版本。

Terminal window
# 回退到某个 commit,修改保留在暂存区
git reset --soft <commit-hash>
# 回退到某个 commit,修改保留在工作区(默认模式)⭐最常用
git reset --mixed <commit-hash>
# 等价于
git reset <commit-hash>
# 回退到某个 commit,修改全部丢弃(慎用⚠️)
git reset --hard <commit-hash>
# 回退最近一次提交,保留修改在工作区
git reset HEAD~1
--hard 慎用

--hard彻底丢弃工作区和暂存区的修改,无法找回。不确定时优先用 --soft--mixed

三种模式对比

模式HEAD 指针暂存区工作区适用场景
--soft✅ 移动❌ 不动❌ 不动合并多个提交为一个
--mixed✅ 移动✅ 重置❌ 不动撤销提交,重新挑选暂存
--hard✅ 移动✅ 重置✅ 重置彻底回退,丢弃所有修改

1.5 git merge — 合并分支#

作用:将指定分支的修改合并到当前分支。

Terminal window
# 将 feature 分支合并到当前分支
git merge feature
# 合并后有冲突?解决后继续
git merge --continue
# 放弃本次合并
git merge --abort

冲突解决流程

  1. 执行 git merge 后出现 CONFLICT 提示
  2. 打开冲突文件,找到 <<<<<<< / ======= / >>>>>>> 标记
  3. 手动选择保留的内容,删除冲突标记
  4. git add <冲突文件>git commit
VSCode 用户

VSCode 会高亮显示冲突区域,并提供 “Accept Current” / “Accept Incoming” / “Accept Both” 的快捷按钮,解决后直接提交即可。


1.6 git diff — 查看差异#

作用:比较文件在不同状态之间的差异,日常排查修改利器。

Terminal window
# 工作区 vs 暂存区(未 add 的改动)
git diff
# 暂存区 vs 最新提交(已 add 但未 commit 的改动)
git diff --staged
# 比较两个分支的差异
git diff main..feature
# 只看文件名(不看具体差异)
git diff --name-only main..feature

2. 分支管理 ⭐#

2.1 git branch 基本操作#

Terminal window
# 查看所有本地分支
git branch
# 查看所有分支(含远程)
git branch -a
# 创建新分支
git branch feature
# 删除分支(已合并的)
git branch -d feature
# 强制删除分支(未合并也删)
git branch -D feature

2.2 分支切换与创建#

Terminal window
# 切换分支
git checkout feature
# 或新版写法(推荐⭐)
git switch feature
# 创建并切换到新分支
git checkout -b feature
# 或新版写法(推荐⭐)
git switch -c feature
switch vs checkout

git checkout 职责过多(切分支、恢复文件、切换 HEAD),Git 2.23+ 引入 switch 专门用于分支切换,语义更清晰。

2.3 合并分支 ⭐#

Terminal window
# 切回主分支,合并 feature
git switch main
git merge feature
# 合并后删除 feature 分支
git branch -d feature

合并策略示意

# 快进合并(Fast-Forward)— feature 直接领先于 main
main ──●──● main ──●──●──● (fast-forward)
└──● feature ─────┘
# 三方合并(3-Way Merge)— 双方都有新提交
main ──●──●──┐
├──● (merge commit)
feature ──●──●─┘

2.4 同步远程分支 ⭐#

Terminal window
# 查看远程仓库信息
git remote -v
# 拉取远程最新代码(不合并)
git fetch origin
# 拉取并合并到当前分支
git pull origin main
# 推送本地分支到远程
git push origin main
# 首次推送并绑定上游分支⭐
git push -u origin main
# 后续直接 git push 即可
fetch vs pull
  • git fetch:只下载远程更新,不自动合并,安全可控
  • git pull = git fetch + git merge,一步到位但可能产生意外冲突

3. 踩坑记录#

3.1 绑定上游分支#

遇到 fatal: The current branch main has no upstream branch 报错时:

Terminal window
# 把本地 main 绑定到远程 study 仓库的 main 分支
git branch --set-upstream-to=study/main main

等价操作:首次推送使用 -u 参数:

Terminal window
git push -u study main

3.2 首次拉取无关历史报错#

fatal: refusing to merge unrelated histories — 两个仓库没有共同祖先时触发。

Terminal window
# 加 --allow-unrelated-histories 解决
git pull study main --allow-unrelated-histories
# 如果同时需要拉取标签
git pull study main --tags --allow-unrelated-histories
注意

此参数仅首次对接时需要,后续正常 pull 无需再加。

3.3 合并冲突处理#

  1. VSCode 图形界面会高亮冲突区域
  2. 选择保留当前(Current)或传入(Incoming)的内容
  3. 确认后 git add .git commit 提交合并结果

4. Tag 标签管理#

作用:标记版本节点(如 v1.0、正式版、里程碑),只读,不随代码频繁改动。

Terminal window
# 查看所有标签
git tag
# 创建轻量标签
git tag v1.0
# 创建附注标签(推荐⭐,包含作者和备注)
git tag -a v1.0 -m "第一个正式版本"
# 给历史提交打标签
git tag -a v0.9 abc1234
# 推送标签到远程
git push origin v1.0
# 推送所有标签
git push origin --tags
# 删除本地标签
git tag -d v1.0
# 删除远程标签
git push origin --delete v1.0
--tags 参数

git pull --tags 可以在拉取代码的同时拉取所有远程标签,常用于版本同步。


5. .gitignore 速查#

详见 → [[gitignore详解]]

# 快速模板
.idea/
.vscode/
node_modules/
dist/
*.log
.env
已跟踪文件的坑

已经 git add / git commit 过的文件,即使写入 .gitignore 也不会生效。需要先解除跟踪:

Terminal window
git rm -r --cached <文件或目录>
git commit -m "解除跟踪"

支持与分享

如果这篇文章对你有帮助,欢迎分享给更多人或赞助支持!

赞助
Git 常用命令速查与分支操作指南
https://firefly.cuteleaf.cn/posts/编程学习/git/git教程/
作者
伊月酱
发布于
2026-06-13
许可协议
CC BY-NC-SA 4.0
Profile Image of the Author
Firefly
Hello, I'm Firefly.
公告
欢迎来到我的博客!这是一则示例公告。
音乐
封面

音乐

暂未播放

0:00 0:00
暂无歌词
分类
标签
站点统计
文章
15
分类
8
标签
31
总字数
36,352
运行时长
0
最后活动
0 天前

文章目录