Git复习
1. 引言
现在要用到Git,复习一下关于Git的指令,知识摘自《Pro Git》
2. 起步
git和其他版本控制软件最大的差别在于git是直接记录某个版本的快照,而不是逐渐地比较差异。
- 安装:
sudo apt install git-all
- 设置用户信息:
git config --global user.name "John Doe"
git config --global user.email johndoe@example.com
- 配置vim为默认文本编辑器:
git config --global core.editor emacs
- 查看配置情况:
git config --list
- 查看某个命令的帮助
-h
eg:git add -h
3. Git基础
1. 初始化:git init
,跟踪 git add
,取消跟踪git rm cached
git add
是一个多功能命令,用于开始跟踪新文件,或者把已跟踪的文件放到暂存区,还能用于合并时把有冲突的文件标记为已解决状态等。
b之前已被add,但是我又修改了一下,暂存区是之前add之后的,修改后但还没add的在工作区,不在暂存区,现在commit的话会提交add时的b的版本。
git status -s
是简短的status的输出:
??
表示新添加未跟踪的文件
A
表示在暂存区
M
表示修改过
D
表示删除了
对某个文件取消跟踪
git rm --cached readme1.txt 删除readme1.txt的跟踪,并保留在本地。
git rm --f readme1.txt 删除readme1.txt的跟踪,并且删除本地文件。
2. 关于改动
看工作区内有哪些改动:git diff
看暂存区内哪些改动:git diff --staged
3. 删除
如果要删除一个已经被track的文件c.txt
,首先从磁盘上删除rm c.txt
,然后执行git rm c.txt
从git中将其删除。
如果已经track了一个你不想track的文件d.txt
,但是又不想从磁盘上删除,则使用git rm --cached README
4. 移动文件
git mv file_from file_to
在linux下就是重命名,git能检测到是改名
其实就相当于三条指令:
mv a.txt A.txt
git rm a.txt
git add A.txt
5. 查看提交历史
git log
git log -2
查看最近的两次提交
显示每次提交所引入的2条差异:git log -p -2
6. 撤销操作
如果上次提交操作有一些纰漏(如忘记添加某个文件),但是又不想弄乱提交记录,就可以使用git commit --amend -m
,来替换上次的提交而不会再多一次提交记录。
git reset HEAD b.txt
可以用于取消对b.txt
文件的暂存。
使用git reset –hard 还原到某一次提交
git reset --hard commit ID
git reset --hard commit ID
git 2.25.1中取消暂存是git restore --staged a.txt
,把a.txt
取消暂存
git restore a.txt
就取消对a.txt文件的保存。
7. 远程仓库
git remote
git remote -v
显示远程仓库的简写和URL
新添一个远程仓库。
- 添加一个新的远程 Git 仓库,同时指定一个方便使用的简写
pb
git remote add pb https://github.com/paulboone/ticgit
- 拉取仓库中有,但是我本地没有的信息:
git fetch pb
访问远程仓库,从中拉取我还没有的数据,完成后,我会拥有那个远程仓库中所有分支的引用。
git clone
之后远程仓库默认为origin,git fetch origin
会抓取clone
后push
的所有工作,git fetch
只会将数据下载到本地仓库,并不会merge
,如有需要,需要手动merge
。git clone
会自动设置本地master
分支跟踪克隆仓库的master
分支(或其他名字的默认分支),git pull origin
通常会抓取服务器上的数据并尝试合并到当前所在的分支。
git push origin master
将本地的项目推送至origin服务器,如果在推送之前有人又推送过了,必须先fetch
后再push
。
- 远程仓库的重命名
git remote rename pb paul
修改远程仓库pb名称为paul,注意这个操作同时也会修改所有远程分支的名字。
- 删除远程仓库
git remote remove paul
一旦删除,所有和这个远程仓库相关的远程跟踪分支以及配置信息都会一起被删除。
8. 标签
用途:用于给某个提交打标签,以示重要,典型的如发布时打上版本号。
分为轻量标签(lightweight)和附注标签(annotated)
轻量标签是某个特定提交的引用;
附注标签是一个对象,存储了annotater的名字、邮箱、日期、标签信息。
建议使用附注标签(含信息多)
打了标签的效果如下所示:
9. 共享标签(把本地标签推送到远程服务器上)
默认情况下git push 并不会传送标签到远程仓库服务器上,创建完标签后必须显式推送到服务器上。
git push origin v1.5
删除服务器上的标签:
git push origin --delete <tagname>
也可以本地删除之后push上去
git tag -d v1.4-lw
git push origin :refs/tags/v1.4-lw
10. Git别名
没什么大用,配置如下例:
git config --global alias.co checkout
git config --global alias.br branch
git config --global alias.ci commit
git config --global alias.st status
4. Git分支
1. 分支创建
创建一个testing
分支:
git branch testing
2. 分支切换
git checkout testing
创建一个新的分支并切换过去:
git checkout -b <newbranchname>
3. 查看分叉历史
git log --oneline --decorate --graph --all
4. 分支的合并 git merge to_be_merged_branch
把develop分支合并到master分支:
git checkout master
git merge develop
这里之前一直有些混乱,现在好好捋一捋:
《Progit》上面的一个案例:
master上工作到iss53时来了个电话要修复master上的bug,切换到master分支,再切一个新分支hotfix来修复bug:
修复完之后把hotfix分支merge到master上:
git checkout master
git merge hotfix
就成了下面这样:
此时hotfix分支不需要了,直接删除:
git branch -D hotfix
变成下面这样
然后需要继续回到iss53分支继续来电话之前我正在做的分支,iss53分支任务完成之后,需要把iss53分支合并到master分支上,但是他们不是共同的祖先分支,master的祖先是C2,iss53的祖先是C3
git checkout master
git merge iss53
git log --oneline --decorate --graph --all
查看
合并完之后是这样:
此时不再需要iss53分支了,遂删除:
git branch -D iss53
特殊地:当相同的文件在不同的分支被修改,在merge时会产生conflit,此时的merge会先暂停,等待你把这部分conflit解决(到底决定保留哪种更改)之后再merge:
上图中在master分支和iss53分支都修改了index.html文件,======上侧的代表在HEAD所指的版本(此时HEAD所指master,所以上侧代表master内的修改),==下侧代表iss53内对index.html的修改,为了解决冲突,你必须选择有=分割的两部分中的一个。
5. rsync的使用
參考博客
常用指令:
push,把本地1/文件夹下的数据推送到远程的oem/param/文件夹下
rsync -a -zz --progress 1/ root@192.168.xx.xx:oem/param/
pull,把远程的oem/param/文件夹下的文件拉到本地的此处./
rsync -a -zz --progress root@192.168.xx.xx:oem/param/ ./
6. 关于smartgit的cherry pick
cherry pick是选择另一个分支的一个提交来提交到目标分支上,但是如果遇到conflict需要手动解决才能commit。参考博客
7. git更改远程分支名字
参考博客
相关文章:

Git复习
1. 引言 现在要用到Git,复习一下关于Git的指令,知识摘自《Pro Git》 2. 起步 git和其他版本控制软件最大的差别在于git是直接记录某个版本的快照,而不是逐渐地比较差异。 安装: sudo apt install git-all设置用户信息: git c…...
WebGPU学习(2)---使用VertexBuffer(顶点缓冲区)
在本文中,我们使用 VertexBuffer 绘制一个矩形。示例地址 1.准备顶点数据 首先,我们准备好顶点数据。定义顶点数据有多种方法,这次我们将在 TypeScript 代码中将其定义为 Float32Array 类型的数据。 const quadVertexSize 4 * 8; // 一个顶…...
【C++之容器篇】AVL树的底层原理和使用
目录前言一、AVL树二、AVL树的底层实现1. 结点类型的定义2. AVL树的定义3. 查找函数4. 插入函数(重难点)三、判断平衡树的方法前言 AVL树其实是在搜索树的基础上加上一些限制因素,从而使搜索树的结构保持相对平衡,通过前面我们对二叉搜索树的学习&#x…...

从交换机安全配置看常见局域网攻击
前言 构建零信任网络,自然离不开网络准入(NAC),这就涉及到交换机的一些安全测试,于是有了此文《从交换机安全配置看常见局域网攻击》。 交换机安全配置 如本文标题所说从交换机安全配置看常见的局域网攻击,那么下面提到的各种攻…...

工具篇3.5世界热力图
一、定义 世界热力图是一种地图形式,它使用颜色的变化来显示世界各个地区的某种指标(如 GDP、人口、气候等)的分布和密度。通常,世界热力图会使用不同的颜色来表示数据的变化,例如使用蓝色表示低值,红色表…...
2023-02-20 leetcode-insertionSortList
摘要: 记录leetcode-insertionSortList的反思 要求: https://leetcode.cn/problems/insertion-sort-list/ Given the head of a singly linked list, sort the list using insertion sort, and return the sorted lists head. The steps of the insertion sort algorithm: In…...
LeetCode初级算法题:环形链表+排列硬币+合并两个有序数组java解法
环形链表排列硬币合并两个有序数组(没错,出现过一次的LeetCode合并数组又双叒叕出现了!)经典算法题java解法 目录1 环形链表题目描述解题思路与代码解法一:哈希表解法二:双指针2 排列硬币题目描述解题思路与…...

网络编程学习一
1、初识网络编程2、网络编程三要素3、三要素(IP)4、IPV4的一些小细节5、Inetaddress类的使用package com.leitao.demo.network;import java.net.InetAddress; import java.net.UnknownHostException;/*** Description: TODO* Author LeiTao* Date 2023/2…...

Javascript 立即执行函数
IIFE,一般称为立即执行函数。你可能会问我,*“嘿!我知道正常的函数表达式是什么样子的,但是 IIFE 到底是什么?”。*好吧,这正是我今天要在本文中回答的问题。 函数表达式 在了解立即调用函数表达式之前,让…...

基于Django和vue的微博用户情感分析系统
完整代码:https://download.csdn.net/download/weixin_55771290/87471350概述这里简单说明一下项目下下来直接跑起的方法。前提先搞好python环境和vue环境,保证你有一个账户密码连上数据库mysql。1、pip install requirements.txt 安装python包2、修改mysql数据库的…...

【C++】IO流
🌈欢迎来到C专栏~~IO流 (꒪ꇴ꒪(꒪ꇴ꒪ )🐣,我是Scort目前状态:大三非科班啃C中🌍博客主页:张小姐的猫~江湖背景快上车🚘,握好方向盘跟我有一起打天下嘞!送给自己的一句鸡汤…...

【论文速递】ACL 2021-CLEVE: 事件抽取的对比预训练
【论文速递】ACL 2021-CLEVE: 事件抽取的对比预训练 【论文原文】:CLEVE: Contrastive Pre-training for Event Extraction 【作者信息】:Wang, Ziqi and Wang, Xiaozhi and Han, Xu and Lin, Yankai and Hou, Lei and Liu, Zhiyuan and Li, Peng and …...

《自动驾驶规划入门》专栏结语
一、 源起 2021年10月12日,化学工业出版社的金编辑根据博客中留下的微信号联系上我,问我有没有出书的想法。从小到大,书与文字在我心里是有着神圣地位的。我在“想试试”与“害怕做不好”这两种矛盾的心情中,还是先应了下来。签了…...

【数据结构与算法】2.八大经典排序
文章目录简介1.分析排序算法2.插入排序2.1.直接插入排序2.2.希尔排序3.选择排序3.1.直接选择排序3.2.堆排序3.2.1.堆的数据结构3.2.2.算法实现4.交换排序4.1.冒泡排序4.2.快速排序5.归并排序6.基数排序7.八大排序算法总结简介 排序对于任何一个程序员来说,可能都不会…...

Windows 免安装版mysql,快速配置教程
简单步骤 下载并解压mysql压缩包,把 “<mysql根目录>/bin” 路径添加到系统环境变量path中命令行执行 mysqld --initialize --console,初始化data目录(数据库表文件默认存放在" <mysql安装根目录>/data "目录下&#…...

空间误差分析:统一的应用导向处理(Matlab代码实现)
👨🎓个人主页:研学社的博客💥💥💞💞欢迎来到本博客❤️❤️💥💥🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密…...

【C++】引用、内联函数、auto关键字、范围for、nullptr
引用什么叫引用引用的特性常引用使用场景传值、传引用效率比较引用和指针的区别内联函数auto关键字(C11)基于范围的for循环(C11)指针空值nullptr(C11)引用 什么叫引用 引用不是新定义一个变量,而是给已存在变量取了一个别名,编译器不会为引用变量开辟内…...

pytest数据驱动
文章目录一、数据驱动概念二、数据驱动yaml1、yaml的基本语法:2、yaml支持的数据格式:3、安装4、使用5、读取方法a、目录结构b、yaml文件c、测试方法d、测试用例e、测试结果三、数据驱动excel1、安装导入2、操作3、读取方法a、目录结构b、excel文件c、测…...

OSI七层网络模型
应用层 定义了各种应用协议规范数据格式:HTTP协议、HTTPS协议、FTP协议、DNS协议、TFTP、SMTP等等。 表示层 翻译工作。提供一种公共语言、通信。 会话层 1、可以从校验点继续恢复数据进行重传。——大文件 2、自动收发,自动寻址的功能。 传输层 1、…...

易基因|MeRIP-seq揭示m6A RNA甲基化通过调控组蛋白泛素化来促进癌症生长和进展:Cancer Res
大家好,这里是专注表观组学十余年,领跑多组学科研服务的易基因。2022年05月16日,《Cancer Res》杂志发表了题为“M6A RNA Methylation Regulates Histone Ubiquitination to Support Cancer Growth and Progression”的研究论文,该…...

关于iview组件中使用 table , 绑定序号分页后序号从1开始的解决方案
问题描述:iview使用table 中type: "index",分页之后 ,索引还是从1开始,试过绑定后台返回数据的id, 这种方法可行,就是后台返回数据的每个页面id都不完全是按照从1开始的升序,因此百度了下,找到了…...

从零实现STL哈希容器:unordered_map/unordered_set封装详解
本篇文章是对C学习的STL哈希容器自主实现部分的学习分享 希望也能为你带来些帮助~ 那咱们废话不多说,直接开始吧! 一、源码结构分析 1. SGISTL30实现剖析 // hash_set核心结构 template <class Value, class HashFcn, ...> class hash_set {ty…...

CMake 从 GitHub 下载第三方库并使用
有时我们希望直接使用 GitHub 上的开源库,而不想手动下载、编译和安装。 可以利用 CMake 提供的 FetchContent 模块来实现自动下载、构建和链接第三方库。 FetchContent 命令官方文档✅ 示例代码 我们将以 fmt 这个流行的格式化库为例,演示如何: 使用 FetchContent 从 GitH…...

Unity | AmplifyShaderEditor插件基础(第七集:平面波动shader)
目录 一、👋🏻前言 二、😈sinx波动的基本原理 三、😈波动起来 1.sinx节点介绍 2.vertexPosition 3.集成Vector3 a.节点Append b.连起来 4.波动起来 a.波动的原理 b.时间节点 c.sinx的处理 四、🌊波动优化…...

(一)单例模式
一、前言 单例模式属于六大创建型模式,即在软件设计过程中,主要关注创建对象的结果,并不关心创建对象的过程及细节。创建型设计模式将类对象的实例化过程进行抽象化接口设计,从而隐藏了类对象的实例是如何被创建的,封装了软件系统使用的具体对象类型。 六大创建型模式包括…...
Kubernetes 网络模型深度解析:Pod IP 与 Service 的负载均衡机制,Service到底是什么?
Pod IP 的本质与特性 Pod IP 的定位 纯端点地址:Pod IP 是分配给 Pod 网络命名空间的真实 IP 地址(如 10.244.1.2)无特殊名称:在 Kubernetes 中,它通常被称为 “Pod IP” 或 “容器 IP”生命周期:与 Pod …...
第22节 Node.js JXcore 打包
Node.js是一个开放源代码、跨平台的、用于服务器端和网络应用的运行环境。 JXcore是一个支持多线程的 Node.js 发行版本,基本不需要对你现有的代码做任何改动就可以直接线程安全地以多线程运行。 本文主要介绍JXcore的打包功能。 JXcore 安装 下载JXcore安装包&a…...

RKNN开发环境搭建2-RKNN Model Zoo 环境搭建
目录 1.简介2.环境搭建2.1 启动 docker 环境2.2 安装依赖工具2.3 下载 RKNN Model Zoo2.4 RKNN模型转化2.5编译C++1.简介 RKNN Model Zoo基于 RKNPU SDK 工具链开发, 提供了目前主流算法的部署例程. 例程包含导出RKNN模型, 使用 Python API, CAPI 推理 RKNN 模型的流程. 本…...

SOC-ESP32S3部分:30-I2S音频-麦克风扬声器驱动
飞书文档https://x509p6c8to.feishu.cn/wiki/SKZzwIRH3i7lsckUOlzcuJsdnVf I2S简介 I2S(Inter-Integrated Circuit Sound)是一种用于传输数字音频数据的通信协议,广泛应用于音频设备中。 ESP32-S3 包含 2 个 I2S 外设,通过配置…...

XXE漏洞知识
目录 1.XXE简介与危害 XML概念 XML与HTML的区别 1.pom.xml 主要作用 2.web.xml 3.mybatis 2.XXE概念与危害 案例:文件读取(需要Apache >5.4版本) 案例:内网探测(鸡肋) 案例:执行命…...