当前位置: 首页 > news >正文

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 时禁止使用

http://www.gsyq.cn/news/110154.html

相关文章:

  • 云端算力的进化:云服务器架构演进的三重范式变革
  • PyTorch图像模型训练与自定义网络实战指南
  • LobeChat能否识别情绪变化?情感智能进阶
  • LobeChat能否发布为PWA?安装到主屏体验
  • 大模型应用三定律丨工具、裁决、责任
  • Air780EPM开发板FFT应用示例:要点剖析与经验分享
  • DeepSeek-V2.5本地部署全指南:从环境到生产
  • 8亿参数Seed-Coder开启智能编程新纪元
  • Langflow:拖拽式AI工作流构建神器
  • 2025年ESG咨询公司精选:推荐联合赤道,ESG咨询与评级服务专业机构深度解读 - 资讯焦点
  • 专业之选,生态共赢:为什么涂鸦智能是擦窗机器人方案商的卓越伙伴 - 星报
  • 数字风险量化技术,源堡科技以实力赋能企业安全 - 资讯焦点
  • 2025年碳晶板知名厂家选哪家?口碑好的批发厂家推荐TOP5 - 工业品牌热点
  • Excalidraw多人协作卡顿?优化网络策略提升体验
  • 08 - 使用Trae开发Python
  • LobeChat能否集成支付宝?国内支付场景接入
  • LobeChat是否支持OAuth登录?用户权限管理方案探讨
  • 搭建Ollama并运行qwen,简单RAG实现
  • 使用线性回归算法预测房价
  • TensorRT-LLM自定义算子开发全指南
  • 2025年安息角测试仪制造企业权威推荐榜单:安息角测定/粉体物理特性测试/粉体综合特性测试仪源头厂家精选 - 品牌推荐官
  • LobeChat能否进行危机公关演练?企业应急准备
  • 豆包打响第一枪,超级Agent和超级APP开战了
  • 「ECG信号处理——(29)基于分层分类的ECG心律失常检测系统设计与实现」2025年12月16日
  • FaceFusion 3.2.0 高质量换脸参数配置指南
  • 放开那三国2 合成系统策划案+交互流程图+拆解脑图+配置表设计填写
  • 亚马逊云科技×General Catalyst:医疗AI优化
  • 少年三国志 任务系统策划案+配置表
  • 济宁婚纱摄影推荐工作室:标杆品牌的深度解析 - 提酒换清欢
  • 基于LLaMA-Factory对GLM-4-9B-Chat进行LoRA微调