news 2026/5/26 9:26:48

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/22 12:55:29

最强AI生图工具 Nano Banana Pro 玩法合集:解锁生产力极限

Nano Banana Pro(NBP)的优势在于它将世界知识、语言理解、图像合成和专业编辑融为一体。玩转 NBP,关键在于从“描述图像”升级到“指令设计”。 一、专业创作核心玩法:突破文字与视觉的鸿沟 NBP 解决了困扰所有 AI 生图工具的文…

作者头像 李华
网站建设 2026/5/21 8:17:26

Keras运行TensorFlow-GPU的版本兼容与配置避坑指南

Keras运行TensorFlow-GPU的版本兼容与配置避坑指南 在深度学习项目中,使用GPU加速训练几乎是标配。但当你满怀期待地运行代码,却突然弹出Failed to get convolution algorithm、libcudart.so not found,或者发现tf.test.is_gpu_available()返…

作者头像 李华
网站建设 2026/5/24 15:23:41

golang学习笔记:基本语法

一. go程序文件结构 //main.go //包声明 package main//引入包 import "fmt"//程序的入口 func main() {/* 这是我的第一个简单的程序 */fmt.Println("Hello, World!") }二. go的基础语法每一行为一条语句,不需要分号,如果一行要写多…

作者头像 李华
网站建设 2026/5/23 21:53:38

使用YOLOv5进行图像检测的完整配置指南

使用YOLOv5进行图像检测的完整配置指南 在工业视觉系统日益普及的今天,如何快速构建一个稳定、高效的目标检测流程,已成为许多工程师和研究者的首要任务。面对众多算法选择,YOLOv5 凭借其简洁的设计、出色的推理速度与精度平衡,以…

作者头像 李华
网站建设 2026/5/22 20:33:18

Linly-Talker容器构建全指南

Linly-Talker容器构建全指南 在虚拟主播、数字员工和智能客服逐渐走入现实的今天,如何快速搭建一个稳定、高效的数字人对话系统,成为许多开发者面临的核心挑战。环境依赖复杂、模型体积庞大、多模块协同困难——这些问题常常让人望而却步。而 Linly-Tal…

作者头像 李华
网站建设 2026/5/25 0:49:18

如何贡献代码给LobeChat开源项目?参与开发全流程

如何贡献代码给 LobeChat 开源项目?参与开发全流程 在 AI 应用快速普及的今天,越来越多开发者不再满足于“调用模型”,而是希望构建真正可用、好用的智能对话产品。然而从零搭建一个具备现代交互体验的聊天界面——支持多模型切换、插件扩展…

作者头像 李华