news 2026/5/1 8:22:47

Git 常用命令与使用方法

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Git 常用命令与使用方法

一、Git 基本概念

1. 三个核心区域

  • 工作区(Working Tree)
    本地正在编辑、修改代码的目录

  • 暂存区(Index / Stage)
    通过git add选择、准备提交的改动

  • 本地仓库(Repository)
    已通过git commit保存的历史版本

Git 的本质:在这三个区域之间移动和管理代码变更。


二、最基础且最常用的命令

1. 查看仓库状态(最常用)

gitstatus

用途:

  • 查看哪些文件被修改
  • 哪些文件已加入暂存区
  • 哪些文件是未跟踪文件

2. 查看提交历史

gitloggitlog --oneline --graph --decorate

用途:

  • 查看提交记录
  • 分析历史版本
  • 配合 Git Graph 使用

3. 查看代码差异

gitdiff# 工作区 vs 暂存区gitdiff--staged# 暂存区 vs 最近一次提交gitdifffile.cpp# 指定文件差异

用途:

  • 在提交前确认具体改了什么

三、暂存区操作(add / reset)

1. 添加文件到暂存区

gitaddfile.cppgitadddir/gitadd.
推荐用法(精细控制):
gitadd-p

作用:

  • 按代码块逐段选择是否加入暂存区
  • 非常适合团队协作

2. 取消 add(撤销暂存)

gitresetgitreset file.cpp

说明:

  • 不删除代码
  • 只是把文件从暂存区移回工作区

四、提交代码(commit)

1. 普通提交

gitcommit -m"commit message"

2. 提交全部已修改文件(不推荐常用)

gitcommit -a -m"message"

建议:commit 信息要清晰描述做了什么,便于团队理解。


五、远程仓库操作(Gitee / GitHub)

1. 查看远程仓库

gitremote -v

2. 添加远程仓库

gitremoteaddorigin https://gitee.com/xxx/project.git

3. 推送代码

gitpushgitpush -u origin mastergitpush -u origin main

说明:

  • -u:建立本地分支与远程分支的关联

4. 拉取远程代码

gitpullgitpull --rebase

推荐使用:

  • git pull --rebase(提交历史更干净)

六、分支管理(团队协作必备)

1. 查看分支

gitbranchgitbranch -a

2. 创建并切换分支

gitcheckout -b feature_xgitswitch -c feature_x

3. 切换分支

gitcheckout mastergitswitch master

4. 删除分支

gitbranch -d feature_x

七、冲突处理与 rebase

1. 使用 rebase 拉取远程代码

gitpull --rebase

2. 解决冲突流程

gitadd.gitrebase --continue

3. 放弃 rebase

gitrebase --abort

八、临时保存修改(stash)

1. 保存当前修改

gitstash

2. 恢复修改

gitstash pop

3. 查看 stash 列表

gitstash list

适用场景:

  • 拉代码前本地还有未完成修改

九、撤销与回退(慎用)

1. 丢弃工作区修改

gitrestore file.cppgitrestore.

2. 回退到某个提交(危险)

gitreset --hard commit_id

十、问题定位相关命令

1. 查看某文件的提交历史

gitlog file.cpp

2. 查看每一行是谁改的

gitblame file.cpp

十一、推荐的日常标准工作流(总结)

gitstatusgitadd-pgitcommit -m"清晰的提交说明"gitpull --rebasegitpush

十二、学习总结要点

  1. 任何操作前,先看git status
  2. 尽量少用git add .,多用git add -p
  3. 团队协作优先使用pull --rebase
  4. 不确定时,不要使用push -f

十三、真实踩坑记录(实战经验总结)


踩坑 1:git push提示 non-fast-forward 被拒绝

现象 / 报错:

! [rejected] master -> master (non-fast-forward) error: 无法推送一些引用到远程仓库

原因:

  • 远程分支已有新提交(如 README、他人提交)
  • 本地分支落后于远程分支

错误做法:

gitpush -f# ⚠ 覆盖远程,团队协作中非常危险

正确做法(推荐):

gitpull --rebase origin mastergitpush

踩坑 2:git pull --rebase提示有未暂存修改

报错信息:

error: 不能变基式拉取:您有未暂存的变更

原因:

  • 工作区有修改但未提交
  • Git 不允许在脏工作区执行 rebase

正确解决方案(最安全):

gitstashgitpull --rebasegitstash pop

踩坑 3:执行了git add .,但想只提交部分文件

问题:

  • 不小心把所有文件 add 进暂存区

解决方法:

gitreset# 取消全部暂存gitaddfile1.cpp# 重新选择需要提交的文件

经验总结:

  • 团队开发中,优先使用git add -p

踩坑 4:文件内容明明不一样,但git diff file.cpp无输出

常见原因:

  1. 文件其实没有被 Git 跟踪
  2. 对比的不是当前分支的内容
  3. VS Code 中的文件未保存到磁盘

排查命令:

gitls-files|grepfile.cppgitdiff--name-statusgitstatus

踩坑 5:git add 文件.*没有效果,暂存区看不到文件

原因:

  • 文件没有任何修改
  • Git 只会暂存“发生变化”的文件

验证方式:

gitdiff文件名

结论:

没有 diff,就没有 add,也不会产生 commit。


踩坑 6:VS Code Git Graph 打不开(Webview / ServiceWorker 报错)

典型报错:

Could not register service worker: InvalidStateError

原因:

  • VS Code Webview Service Worker 在部分 Linux 环境异常

解决方式(settings.json):

"webview.experimental.enableServiceWorkers":false

然后重启 VS Code。


踩坑 7:stash 之后忘了恢复代码

现象:

  • git stash后感觉代码“丢了”

解决:

gitstash listgitstash pop

经验:

stash 不会丢代码,只是临时存放。


踩坑 8:误用git reset --hard

后果:

  • 工作区和暂存区修改全部丢失

原则:

  • 非必要不使用--hard
  • 不熟悉 commit_id 时禁止使用

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/1 3:35:36

LobeChat能否部署在边缘计算节点?低延迟场景应用

LobeChat能否部署在边缘计算节点?低延迟场景应用 在智能制造车间,一台工业机器人因传感器异常停机。现场工程师打开平板电脑,连接厂区本地网络中的AI助手,输入:“根据历史日志,分析最近三次类似报警的处理方…

作者头像 李华
网站建设 2026/5/1 4:23:06

金融领域语音识别技术的优化与应用

金融领域语音识别技术的优化与应用关键词:金融领域、语音识别技术、优化、应用、深度学习摘要:本文聚焦于金融领域语音识别技术的优化与应用。首先介绍了研究的背景、目的、预期读者等内容。接着阐述了语音识别的核心概念、联系及架构,详细讲…

作者头像 李华
网站建设 2026/5/1 4:23:07

Qwen3-14B Docker部署与Function Calling实战

Qwen3-14B Docker部署与Function Calling实战 在企业AI落地的今天,真正决定成败的早已不是“模型能不能生成一段漂亮的文案”,而是——它能不能读完一份20页的合同后指出风险条款?能不能看到发票就自动走报销流程?甚至&#xff0c…

作者头像 李华
网站建设 2026/5/1 5:22:43

宝塔面板下两个WordPress网站共用Memcached完整配置指南

宝塔面板下两个WordPress网站共用Memcached完整配置指南 在宝塔面板中部署多个WordPress(简称WP)网站后,通过Memcached实现内存缓存是提升站点性能的关键手段。Memcached可将WP的数据库查询结果、文章内容等常用数据暂存于内存,大…

作者头像 李华
网站建设 2026/5/1 5:22:43

【Maven】生命周期、依赖与继承

生命周期Maven的生命周期是对所有的构建过程进行抽象和统一。Maven的生命周期是抽象的,这意味着生命周期本身不做任何实际的工作,生命周期只是定义了一系列的阶段,并确定这些阶段的执行顺序。而在执行这些阶段时,实际的工作还是由…

作者头像 李华
网站建设 2026/5/1 5:24:11

Docker部署Qwen3-8B与vLLM推理加速实战

Docker部署Qwen3-8B与vLLM推理加速实战 在消费级显卡上跑通一个真正能用的大语言模型,曾是许多开发者遥不可及的梦想。但随着Qwen3-8B这类高性价比模型的出现,以及vLLM等高效推理框架的成熟,如今只需一块RTX 4090,就能搭建出响应迅…

作者头像 李华