news 2026/9/1 2:12:41

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/8/31 20:19:15

LobeChat如何实现多用户权限管理?适用于团队协作场景

LobeChat 如何实现多用户权限管理?适用于团队协作场景 在企业级 AI 应用日益普及的今天,一个看似简单的“聊天框”背后,往往承载着复杂的组织需求:不同角色的员工需要访问不同的功能,敏感会话数据必须隔离,…

作者头像 李华
网站建设 2026/9/1 13:02:14

SQL窗口函数(使用场景)

1. 常见排名和排序 -- 行号 ROW_NUMBER() OVER (ORDER BY sales DESC) AS rank-- 排名(允许并列) RANK() OVER (ORDER BY sales DESC) AS rank-- 密集排名 DENSE_RANK() OVER (ORDER BY sales DESC) AS dense_rank-- 分位数 NTILE(4) OVER (ORDER BY sa…

作者头像 李华
网站建设 2026/9/1 17:53:15

Linux下TensorFlow-GPU环境配置全指南

Linux下TensorFlow-GPU环境配置全指南 在深度学习项目中,一个稳定、高效的GPU训练环境几乎是标配。然而,不少工程师在搭建 TensorFlow-GPU 环境时仍会遭遇“明明步骤都对,却死活跑不起来”的窘境——动态库加载失败、驱动版本不匹配、Python…

作者头像 李华
网站建设 2026/8/31 23:43:49

LobeChat能否发布为PWA?安装到主屏体验

LobeChat 能否发布为 PWA?安装到主屏的完整实践与体验优化 在智能手机充斥日常生活的今天,我们早已习惯了从主屏幕一键启动微信、钉钉或抖音。而当越来越多的 AI 工具以 Web 应用的形式出现时,一个自然的问题浮现:为什么不能像原生…

作者头像 李华
网站建设 2026/9/1 20:31:12

对分布式事务的一点总结

分布式事务实践:从问题到 Seata 解决方案 写在前面 去年我在做一个电商系统重构,把原来的单体应用拆成了订单服务、库存服务、支付服务、积分服务。拆分完成后,遇到了一个头疼的问题:用户下单时,需要同时扣库存、创建…

作者头像 李华