一.Gitee基本操作

一.初始化

1.git init初始化仓库

git init 用于在当前目录下初始化一个本地 Git 仓库,让这个目录开始被 Git 跟踪和管理。

生成 .git 元数据目录,从而可以开始进行提交、回退、分支管理等操作。

2.git config user.name/user.email配置本地仓库

# 设置用户名
git config user.name "你的名字"# 设置邮箱(与 GitHub 等平台账户一致)
git config user.email "你的邮箱@example.com"# 查看当前配置
git config -l#删除配置
git config --unset user.name
git config --unset user.email

上面配置的是局部的本地仓库 加上--global可以设置为全局的。

# 设置全局用户名
git config --globa user.name "你的名字"# 设置全局邮箱(与 GitHub 等平台账户一致)
git config --globa user.email "你的邮箱@example.com"# 查看当前配置
git config -l#删除配置
git config --globa --unset user.name
git config --globa --unset user.email

什么是局部?什么是全局?为什么?

Git 是为多个项目、多用户设计的系统,所以需要支持“不同作用范围的配置”:

作用域说明示例
--system整个操作系统层面(对所有用户生效)不常用,配置在 /etc/gitconfig
--global当前登录用户的所有项目常用,配置在 ~/.gitconfig
(默认)当前 Git 项目的配置(最精确)配置在 .git/config 文件中
你想干什么推荐方式
所有项目都用同一个名字和邮箱--global 设置一次即可
某个项目用不同的名字和邮箱在项目目录下直接 git config

二.添加

1.git add把修改加入暂存区

2.git commit提交到版本库        

区域位置名功能说明
工作区工作目录(Working Directory)你正在编辑的真实文件所在位置
暂存区stageindex保存你“准备提交”的文件快照
版本库.git/objects.git/HEAD保存所有历史版本(已提交内容)
git add把代码放入暂存区  git commit把暂存区代码存入版本库

gti log查看历史提交记录

三.查看

1.git status查看当前仓库的状态

git status 是 Git 中最常用的命令之一,用于查看当前仓库的状态,特别是在你开发过程中了解哪些文件发生了变化、是否已被 add、是否有未提交的内容等

状态类别含义说明
Untracked files工作区中有新建但未被 Git 跟踪的文件(没被 add
Changes not staged for commit已被修改但未 add 进暂存区
Changes to be committedadd,等待 commit
nothing to commit所有文件都已提交,仓库干净

git status -s     简洁模式(short),常用于配合脚本或快速查看

状态符号文件路径含义
ATCP/client.cc✔️ 新文件,已 add 进暂存区,等待提交
MUDP/client.cc✏️ 文件被修改,但尚未 add,还在工作区
??TCP/server.cc🆕 新文件,未被 Git 跟踪,没被 add
 其它状态缩写
符号含义说明
??Untracked(未跟踪文件)
AAdded(已添加到暂存区的新文件)
MModified(已修改)
DDeleted(删除)
RRenamed(重命名)
CCopied(复制)
AM新文件添加后又被修改
MMadd 的文件再次修改,暂存区和工作区都修改了
UDunmerged conflict:你删除了文件,但它在合并中被修改
UU合并冲突(两边都修改)

2.git diff 查看代码变更内容

git diff 是 Git 中用于查看代码变更内容的命令,帮你对比不同版本、文件或状态的具体修改细节(逐行对比)。

git diff 工作区 和 暂存区 差异(没add的内容)

表示:工作区 和 暂存区 的差异(即你修改了但还没 add 到暂存区的内容)

后面还也加指定文件夹/文件 没有差异不会输出

git diff --cached 暂存区 和 最新提交 的差异(没push的内容)

表示:已经 git add 过的内容,和当前最新一次提交之间的差异(也就是你准备push提交的内容

当然后面也可以指明文件/文件夹

git status git diff配合使用 找到变化文件+查看具体变化
命令用途
git status看“哪些文件”发生了变化
git diff看“具体改动内容是啥”
# 1. 先查看有哪些变更的文件
git status# 2. 查看未 add 的文件改了什么
git diff# 3. 如果 add 了,再看 add 的内容(准备 commit 的)
git diff --cached# 4. 最后确认无误,提交
git commit -m "说明"

git status -s 发现TCP/client.cc文件add到了暂存区 还进行了修改,想看看具体改了什么就用

git diff TCP/client.cc找具体的改动

四.git reset版本回退

git reset 回退版本(会更改提交历史) 用于本地撤回提交、修改。

git reset 有三个选项

--soft

回退版本库 

--mixed (默认)

回退版本库+暂存区

--hard

回退版本库+暂存区+工作区

想做什么事情用哪个选项解释
✅ 只想回退提交记录,但保留已经写好的代码和 add 状态(准备重新commti提交)git reset --soft改了 commit,但代码和暂存区内容保留
✅ 回退提交记录,并把代码从暂存区拿出来,保留在工作区(想重新 addgit reset --mixed(默认)改了 commit,撤销了 git add,但代码还在
⚠️ 提交错了、代码也不想要了,想恢复成某个版本的干净状态git reset --hard彻底抹除提交 + 暂存区 + 工作区,慎用!
慎用 --hard 版本库 暂存区 工作区的内容全会修改 不可恢复                                                
怎么选?
你想做什么使用命令解释说明
💡 只想换个提交说明,不改代码git reset --soft HEAD^回退提交,保留暂存区(add)和代码,重新写 commit 信息
✏️ 不想提交当前内容,改完代码再提交git reset HEAD^(默认是 --mixed回退提交 + 撤销 add,代码保留在工作区,可修改再 add
完全不想要这次提交,也不想要这次改的代码了git reset --hard HEAD^回退提交 + 暂存区 + 工作区全部还原,代码会丢失(⚠️危险)

git log --oneline+git reset 进行版本回退

git log --oneline (简略版)先获取提交记录 里面的提交ID(黄色部分)

git reset +要回退到的版本的提交ID (默认选项--mixed 版本库+暂存库都会回退)

后悔了怎么办?

只要有对应的版本ID 就可以返回

如果没有保存版本ID怎么办?

git relog 查看每个版本库的ID

git reflog 用来查看你所有 HEAD 指针的变动历史记录,里面会有每个版本的ID

五.撤销修改

撤销修改 我们分为三种情况 1.只在工作区 2.add到了暂存区 3.commit到了版本库

状态描述推荐命令简明说明
改错代码,未 addgit checkout -- <文件>恢复工作区代码为上次提交版本,最安全
改错代码,已 add

git reset <文件> && git checkout -- <文件>

先撤销暂存,再还原代码
已commit,但未 push

git reset --hard HEAD^(多个文件)或者

git reset <文件> && git checkout -- <文件> (单个文件)

回退最近一次提交,代码和提交记录都丢弃,危险操作

git checkout -- <file> 撤销该文件改动 恢复为上次 commit 的版本

git checkout -- <文件>

把工作区file文件的代码进行撤销修改。

git reset <文件> && git checkout -- <文件> 

git reset <文件> 只针对file文件 版本库 暂存区进行撤销

想撤销全部文件的话 git reset HEAD 

HEAD指向当前版本 HEAD^指向上个版本 HEAD^^上两个版本 ...

带上 --hard就是连带工作区的代码也进行修改 但不能但只对一个文件进行操作,会把所有文件进行修改。

git reset --hard HEAD^

git reset --hard HEAD^ 版本库 赞成区 工作区都回退到上个版本

因为已经commit提交到版本库了,log已经记录当前版本ID HEAD指向当前版本,撤销就是要回到上一个版本 所以是HEAD^。

六.git rm删除文件

将文件 从 Git 的版本库和暂存区中删除,并默认在工作区(磁盘)也删除该文件。

1.git rm <file> 删除指定文件

此时文件从 暂存区 和 工作区 都会被删除;

2.git commit -m "删除文件"

写入版本库 文件在版本库中也被删除

不想删除工作区的文件,怎么办?

git rm --cached <file> 工作区中文件不删除

1.git rm --cached <file>

仅在暂存区中删除 工作区中不删除

2.git commit -m "删除文件"

删除版本库中的

删除目录加 -r 选项

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/79554.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

力扣210(拓扑排序)

210. 课程表 II - 力扣&#xff08;LeetCode&#xff09; 这是一道拓扑排序的模板题。简单来说&#xff0c;给出一个有向图&#xff0c;把这个有向图转成线性的排序就叫拓扑排序。如果有向图中有环就没有办法进行拓扑排序了。因此&#xff0c;拓扑排序也是图论中判断有向无环图…

华为ensp实现跨vlan通信

要在网络拓扑中实现主机192.168.1.1、192.168.1.2和192.168.2.1之间的互相通信&#xff0c;需要正确配置交换机&#xff08;S5700&#xff09;和路由器&#xff08;AR3260&#xff09;&#xff0c;以确保不同网段之间的通信&#xff08;即VLAN间路由&#xff09;。 网络拓扑分析…

热部署与双亲委派

热部署初探与双亲委派机制 一、热部署初探 ​ 热部署就是在不重启服务的情况下&#xff0c;无需重新启动整个应用&#xff0c;就能对代码、配置等进行更新并使新的更改在服务中生效。以下代码可以打破双亲委派机制&#xff0c;利用类加载器的隔离实现热部署。可分为以下三步进…

AWS SNS:解锁高并发消息通知与系统集成的云端利器

导语 在分布式系统架构中&#xff0c;如何实现高效、可靠的消息通知与跨服务通信&#xff1f;AWS Simple Notification Service&#xff08;SNS&#xff09;作为全托管的发布/订阅&#xff08;Pub/Sub&#xff09;服务&#xff0c;正在成为企业构建弹性系统的核心组件。本文深度…

驱动开发硬核特训 · Day 30(下篇): 深入解析 lm48100q I2C 音频编解码器驱动模型(基于 i.MX8MP)

作者&#xff1a;嵌入式Jerry 视频教程请关注 B 站&#xff1a;“嵌入式Jerry” 一、背景与目标 在本篇中&#xff0c;我们围绕 TI 的 lm48100q 音频编解码器 展开&#xff0c;深入讲解其作为 I2C 外设如何集成至 Linux 内核音频子系统&#xff08;ASoC&#xff09;&#xff0…

idea写spark程序

步骤 1&#xff1a;创建 Maven 项目 打开 IntelliJ IDEA&#xff0c;选择 File > New > Project。选择 Maven&#xff0c;勾选 Create from archetype&#xff0c;选择 org.apache.maven.archetypes:maven-archetype-quickstart。填写 GroupId&#xff08;如 com.exampl…

【C语言练习】032. 编写带参数的函数

032. 编写带参数的函数 032. 编写带参数的函数1. 定义带参数的函数示例1:定义一个带参数的函数输出结果2. 传递多个参数示例2:定义一个带多个参数的函数输出结果3. 传递数组作为参数示例3:定义一个带数组参数的函数输出结果4. 传递结构体作为参数示例4:定义一个带结构体参数…

Java虚拟机的基本结构

jvm它包含以下部分 第一个&#xff1a;类加载系统 类加载子系统&#xff0c;负责类的加载。类加载器有三种类型&#xff1a;引导类加载器、扩展类加载器、应用程序类加载器。 第二个&#xff1a;运行时数据区 包含了程序计数器、Java虚拟机栈、本地方法栈、堆 、方法区。 程…

uniapp引入七鱼客服微信小程序SDK

小程序引入七鱼sdk 1.微信公众平台引入2.代码引入3.在pagesQiyu.vue初始化企业appKey4.跳转打开七鱼客服 1.微信公众平台引入 账号设置->第三方设置->添加插件->搜索 QIYUSDK ->添加 2.代码引入 在分包中引入插件 "subPackages": [{"root":…

手撕算法(定制整理版2)

最长无重复子字符串 class Solution(object):def lengthOfLongestSubstring(self, s):""":type s: str:rtype: int"""if not s:return 0max_len 0tp []for a in s:while a in tp:del tp[0]tp.append(a)if len(tp) > max_len:max_len len(…

数字IC后端培训教程之数字后端项目典型案例分析

今天给大家分享下最近小编帮助学员解决的几个经典数字IC后端项目问题。希望能够对大家的学习和工作有所帮助。 数字IC后端项目典型问题之后端实战项目问题记录&#xff08;2025.04.24&#xff09; 数字IC后端设计实现培训教程&#xff08;整理版&#xff09; Q1: 老师好&…

window 显示驱动开发-将虚拟地址映射到内存段(二)

在将虚拟地址映射到段的一部分之前&#xff0c;视频内存管理器调用显示微型端口驱动程序的 DxgkDdiAcquireSwizzlingRange 函数&#xff0c;以便驱动程序可以设置用于访问可能重排的分配位的光圈。 驱动程序既不能将偏移量更改为访问分配的 PCI 光圈&#xff0c;也不能更改分配…

Termius ssh连接服务器 vim打开的文件无法复制问题

你的问题是&#xff1a; • 在 Termius (macOS) SSH 连接到 VMware Ubuntu&#xff0c;使用 vim 打开 .cpp 文件时&#xff0c;可以复制文本&#xff1b; • 但在 Windows 10 上 SSH 到 VMware 的 Red Hat 6.4 时&#xff0c;复制操作无效。 ⸻ &#x1f3af; 初步分析 复制…

杨校老师项目之基于SSM与JSP的鲜花销售系统-【成品设计含文档】

基于SSMJSP鲜花商城系统 随着电子商务的快速发展&#xff0c;鲜花在线销售已成为一种重要的消费模式。本文设计并实现了一个基于JSP技术的鲜花销售管理系统&#xff0c;采用B/S架构&#xff0c;使用SSM框架进行开发&#xff0c;并结合Maven进行项目依赖管理。系统分为前台用户模…

集成学习——Bagging,Boosting

一.什么是集成学习 集成学习的基本思想是通过结合多个基学习器的预测结果&#xff0c;来提高模型的泛化能力和稳定性。这些基学习器可以是相同类型的算法&#xff0c;也可以是不同类型的算法。 当基学习器之间具有一定的差异性时&#xff0c;它们在面对不同的样本子集或特征子…

【笔试训练】给一个数组构建二叉树|从前序遍历与中序遍历构建二叉树|二叉树中的最大路径和

文章目录 1.给一个数组构建二叉树2.从前序遍历和中序遍历构建二叉树3.二叉树中的最大路径和 1.给一个数组构建二叉树 思路&#xff1a;就是借助一个队列实现层序遍历的思想。 先将root节点入队列&#xff0c;构造左右节点后&#xff0c;root取出来时&#xff0c;将其左右孩子都…

Swift实战:如何优雅地从二叉搜索树中挑出最接近的K个值

文章目录 摘要描述题解答案题解代码分析示例测试及结果时间复杂度空间复杂度总结未来展望 摘要 在日常开发中&#xff0c;我们经常会遇到“在一堆数据中找出最接近某个值”的需求。尤其在搜索引擎、推荐系统或者地理坐标匹配中&#xff0c;这种“最近匹配”的问题非常常见。Le…

Linux512 ssh免密登录 ssh配置回顾

下载MX 官网 参考 OK 登个tom试试 然后再计划登个RealServer 计划再用仅主机网卡试试 连不上 看来要通过JumpServer再联 通过网卡访问 被踢掉了 成功通过跳板机JumpServer登入到RealServer 方法一免密登录 现计划尝试方法二 只有1个tom 我连了两个tom 看来是根据IP划…

编译原理AST以Babel为例进行解读、Webpack中自定义loader与plugin

AST树详解 编译原理 主要研究如何将高级编程语言的源代码转换为机器能理解的目标代码&#xff08;通常是二进制代码或中间代码&#xff09;。编译器的底层实现通常包含多个阶段&#xff0c;包括词法分析、语法分析、语义分析和代码生成。 一、AST的核心概念与作用 AST&#…

51c大模型~合集127

我自己的原文哦~ https://blog.51cto.com/whaosoft/13905076 #Executor-Workers架构 图解Vllm V1系列2 本文详细介绍了vllm v1的Executor-Workers架构&#xff0c;包括Executor的四种类型&#xff08;mp、ray、uni、external_launcher&#xff09;及其适用场景&#xff…