深入学习git
1、git原理及整体架构图

一些常用的命令
git add . 或 git add + src/com/ygl/hello/hello.java 指定文件
git commit . 或 git commit + src/com/ygl/hello/hello.java 指定文件
git push origin 分支名称
2、git stash的应用场景
场景一:你正在当前分支A开发,开发到一半,需要切换到分支B去修改bug
方法一:(紧急情况)
① git stash
② git checkout B,在B分支处理完成后
③ git checkout A ④ git stash pop
方法二:(不紧急情况) 先开发完成A分支并且提交,后切过去B分支解决bug
场景二:代码开发完成了,准备提交
① git stash
② git pull
③ git stash pop
④ 本地可能出现冲突情况,如果冲突的直接解决就好
⑤ git commit -m “注释”
⑥ git push origin 分支名字
关于git stash一些常用命令
存(入栈)
git stash
git stash save + “注释”
取(出栈)
git stash pop + stash@{0}
git stash apply + stash@{0}
说明:如果apply是获取栈的信息,但是步删除栈,pop会删除栈顶,如果pop上面有栈压着,他的效果跟apply一样,都不会删除栈
清理
git stash drop +stash@{0}
git stash clear 清楚所有栈
查看
git stash list 查看所有栈
git stash show + stash@{0} 查看某个栈
3、理解rebase与merge的区别
rabase(变基): 原来节点的版本版本号会改变
merge(合并):原来节点保留,新增一个节点去合并
实现的目的是一样的,只是展现形式或者场景不一样
4、各种场景的代码回滚方式
① 在工作区
git checkout + 分支名称
② 在暂存区
git reset HEAD + commit_id
git checkout + 分支名称
③ 在本地仓库(见第7点)
git reset --soft + commit_id 回退后,代码存放在暂存区
git reset --mixed + commit_id 回退后,代码存放在工作区
git reset -hard +commit_id 回退后,直接删除代码了
5、smart checkout与force checkout区别
smart checkout :会把冲突的这部分代码带到目的分支
force checkout : 不会把冲突带到目的分支,但是会删除当前分支新增的东西
6、如何撤销已经push到远程的修改,及撤销错如何恢复
撤销:
① 找要回退到的版本号 :git log
② 回退:git reset --soft 4cf2621742ae2beac4e54533df63037e6dfadb18
③ 强推:git push origin ygl02 --force
需要注意的是:别人在你撤销前拉取你需要回退的代码,如果别人再次提交,会导致代码恢复
解决办法:① 让别人提交代码再去解决, ② 你解决后让别人再次拉取最新代码再做提交
恢复:
① 通过 git reflog找到原来的版本
② 跟上面的②③过程一样
git中reset和revert的区别是什么
区别:
1、reset是彻底回退到指定的commit版本,该commit后的所有commit都将被清除;而revert仅是撤销指定commit的修改,并不影响后续的commit。
2、reset执行后不会产生记录,revert执行后会产生记录。
使用:git revert +commit_id -> git push origin ygl01
还原:git revert --abort
7、理解soft、mixed,hard区别
从本地仓库回退到不同的地方
git reset --soft + commit_id 回退后,代码存放在暂存区
git reset --mixed + commit_id 回退后,代码存放在工作区
git reset -hard +commit_id 回退后,直接删除代码了
8、git status 、git log 、 git reflog的使用
git status 查看文件的提交状态
git log 查看提交版本日志
git reflog 查看所有版本提交日志(包括回退的版本)
9、如何查看本地分支与远程分支,及当前选中的分支
查看本地分支
① git branch 注:有*号表示当前分支
② git branch -v 包括一些当前版本号等信息
查看远程分支
① git branch -r
② git brean -rv
查看所有分支信息
git branch -a
10、IDEA中用Terminal进行git commit输入中文再进行修改时出现乱码的问题解决
第一步:
# --注释:该命令表示提交命令的时候使用utf-8编码集
git config --global i18n.commitencoding utf-8
# --注释:该命令表示日志输出时使用utf-8编码集显示
git config --global i18n.logoutputencoding utf-8
第二步:LESSCHARSET=utf-8

第三步:重启idea
11、查看当前提交的文件
git show --name-only 只看名字
git show; 看全部
12、git pull和git pull --rebase的区别和使用
使用下面的关系区别这两个操作:
git pull = git fetch + git merge
git pull --rebase = git fetch + git rebase
git pull = git fetch + git merge FETCH_HEAD
git pull --rebase = git fetch + git rebase FETCH_HEAD
差距就在git fetch之后的合并操作,合并操作有两种方式: git merge和git rebase
13、git clone、git pull和git fetch的用法及区别
git clone:克隆的是整个远程库。
git clone https://github.com/tensorflow/tensorflow.git
git fetch:克隆的是远程库的一个分支。
git fetch更新本地仓库的两种用法:
# 方法一
$ git fetch origin master #从远程的origin仓库的master分支下载代码到本地的origin maste
$ git log -p master.. origin/master #比较本地的仓库和远程参考的区别
$ git merge origin/master #把远程下载下来的代码合并到本地仓库,远程的和本地的合并
# 方法二
$ git fetch origin master:temp #从远程的origin仓库的master分支下载到本地并新建一个分支temp
$ git diff temp #比较master分支和temp分支的不同
$ git merge temp #合并temp分支到master分支
$ git branch -d temp #删除temp
git branch -D temp #注意删除时,需要两次确认删除才会删除
git pull:是拉取远程分支更新到本地仓库的操作
git pull的用法:
$ git pull <远程主机名> <远程分支名>:<本地分支名>
举例:将远程主机origin的master分支拉取过来,与本地的branchtest分支合并。
$ git pull origin master:branchtest
如果将冒号和后面的branchtest去掉,则表示将远程origin仓库的master分支拉取下来与本地当前分支合并。
以上的git pull操作如果用git fetch来表示:
$ git fetch origin master:brantest
$ git merge brantest
14、如何创建新的分支
git branch dev
以有的分支创建新的分支
git checkout -b yourbranchname origin/oldbranchname
15、cherry-pick学习


16、git diff 没有点、两个点和三个点的区别(比较冷门,理解不了可以不看,看自己是否感兴趣)
git 命令中的点总是让人有疑惑,在不同的地方有不同的意思,那git diff 中的点代表什么,有的不加点,有的两个点,有的三个点
我首先要明确git log 和 git rev-list 一样都是表示的一个范围, git diff 的参数不是标识范围,就是标识两个commit 之间的差异,跟范围没有关系
这里有两个commit foo 和 bar ,也可以是两个分支,如果是分支意味着要比较分支的head
git diff foo bar: 比较 foo 和 bar两个commit点的差别
git log foo…bar 等同于上面不加点 :比较 foo 和 bar两个commit点的差别
git log foo…bar 等同于 git diff $(git merge-base foo bar) bar :比较的foo和bar merge base那个点(最近的共同的parent)和 bar
还是上图说明更容易理解



和 git log 相比,git diff 是两个commit点的比较,不涉及范围,没有点和两个点代表直接比较,三个点代表从merge点开始比较
在gitlab web页面上的diff 就是用的三个点的方式
17、git diff,git log 三点 和 两点的区别(冷知识)


18、一些配置公钥私钥配置涉及到的命令
配置git ,打开Git Bash,添加用户名和邮箱(自己名字拼音):
git config --global user.name “zhangshan”
git config --global user.email “zhangshan@qq.com”
git config --global core.autocrlf false
ssh-keygen -t rsa -C “zhangshan@qq.com”
然后按三次回车
复制key到git平台上setting,也可以用命令cat id_rsa.pub

相关文章:
深入学习git
1、git原理及整体架构图 一些常用的命令 git add . 或 git add src/com/ygl/hello/hello.java 指定文件 git commit . 或 git commit src/com/ygl/hello/hello.java 指定文件 git push origin 分支名称 2、git stash的应用场景 场景一:你正在当前分支A开发&…...
第9章 Mybatis
9.1 谈谈你对Mybatis的理解 难度:★★ 重点:★★ 白话解析 说清楚Mybatis是什么,它的工作流程,然后再对比一下Hibernate就好了。 1、Mybatis是什么:它一个半自动ORM框架,它底层把JDBC那套加载驱动、创建连接、创建statement等重复性的硬编码全部给你封装好了,程序员只…...
隐蔽通信论文复现
文章目录 前言一、Limits of Reliable Communication with Low Probability of Detection on AWGN Channels摘要introduction 前言 本文准备先考虑隐蔽中通信经典的Alice, Bob, Willie三点模型, 总结出其中的经典套路 一、Limits of Reliable Communication with Low Probabil…...
《Vue.js+Spring Boot全栈开发实战》简介
大家好,我是老卫。 恰逢中秋国庆双节,不想出门看人山,惟愿宅家阅书海! 今天开箱的这本书是《Vue.jsSpring Boot全栈开发实战》。 外观 从书名故名思议,就是基于Vue.jsSpring Boot来实现企业级应用全栈开发。 该书由…...
机器人中的数值优化(二十)——函数的光滑化技巧
本系列文章主要是我在学习《数值优化》过程中的一些笔记和相关思考,主要的学习资料是深蓝学院的课程《机器人中的数值优化》和高立编著的《数值最优化方法》等,本系列文章篇数较多,不定期更新,上半部分介绍无约束优化,…...
搭建全连接网络进行分类(糖尿病为例)
拿来练手,大神请绕道。 1.网上的代码大多都写在一个函数里,但是其实很多好论文都是把网络,数据训练等分开写的。 2.分开写就是有一个需要注意的事情,就是要import 要用到的文件中的模型或者变量等。 3.全连接的回归也写了&#…...
【小沐学前端】Node.js实现基于Protobuf协议的UDP通信(UDP/TCP)
文章目录 1、简介1.1 node1.2 Protobuf 2、下载和安装2.1 node2.2 Protobuf2.2.1 安装2.2.2 工具 3、node 代码示例3.1 HTTP3.2 UDP单播3.4 UDP广播 4、Protobuf 代码示例4.1 例子: awesome.proto4.1.1 加载.proto文件方式4.1.2 加载.json文件方式4.1.3 加载.js文件方式 4.2 例…...
Verasity Tokenomics — 社区讨论总结与下一步计划
Verasity 代币经济学的社区讨论已结束。 本次讨论从 8 月 4 日持续到 9 月 29 日,是区块链领域规模最大的讨论之一,超过 500,000 名 VRA 持有者和社区成员参与讨论,并收到了数千份回复。 首先,我们要感谢所有参与讨论并提出详细建…...
JUC第十三讲:JUC锁: ReentrantLock详解
JUC第十三讲:JUC锁: ReentrantLock详解 本文是JUC第十三讲,JUC锁:ReentrantLock详解。可重入锁 ReentrantLock 的底层是通过 AbstractQueuedSynchronizer 实现,所以先要学习上一章节 AbstractQueuedSynchronizer 详解。 文章目录 …...
WSL2安装历程
WLS2安装 1、系统检查 安装WSL2必须运行 Windows 10 版本 2004 及更高版本(内部版本 19041 及更高版本)或 Windows 11。 查看 Windows 版本及内部版本号,选择 Win R,然后键入winver。 2、家庭版升级企业版 下载HEU_KMS_Activ…...
Ubuntu20配置Mysql常用操作
文章目录 版权声明ubuntu更换软件源Ubuntu设置静态ipUbuntu防火墙ubuntu安装ssh服务Ubuntu安装vmtoolsUbuntu安装mysql5.7Ubuntu安装mysql8.0Ubuntu卸载mysql 版权声明 本博客的内容基于我个人学习黑马程序员课程的学习笔记整理而成。我特此声明,所有版权属于黑马程…...
【解决方案】‘create’ is not a member of ‘cv::aruco::DetectorParameters’
‘create’ is not a member of ‘cv::aruco::DetectorParameters’ 在构建AruCo标定板标定位姿代码的过程中,发现代码中认为create并不是aruco::DetectorParameters的成员函数,这是因为在4.7.0及以上的OpenCV版本中,对ArUco的代码做调整&…...
门牌制作(蓝桥杯)
门牌制作 题目描述 本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。 小蓝要为一条街的住户制作门牌号。 这条街一共有 2020 位住户,门牌号从 1 到 2020 编号。 小蓝制作门牌的方法是先制作 0 到 9 这几个数字字…...
支付宝支付模块开发
生成二维码 使用Hutool工具类生成二维码 引入对应的依赖 <dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>5.7.5</version> </dependency><dependency><groupId>com.go…...
12、Kubernetes中KubeProxy实现之iptables和ipvs
目录 一、概述 二、iptables 代理模式 三、iptables案例分析 四、ipvs案例分析 一、概述 iptables和ipvs其实都是依赖的一个共同的Linux内核模块:Netfilter。Netfilter是Linux 2.4.x引入的一个子系统,它作为一个通用的、抽象的框架,提供…...
从0开始python学习-29.selenium 通过cookie信息进行登录
1. 手动输入cookie信息保持登录状态 url https://test.com/login driver.get(url) # 手动将cookie信息写入(有多个的情况需要分开写入)--弊端为需要每次都手动输入,很麻烦不适用 driver.add_cookie({"name": "SIAM_IMAGE_…...
CentOS安装OpenNebula(二)
被控端部署: 先要配置好yum源: [rootmaster yum.repos.d]# vim opennebula.repo[rootmaster yum.repos.d]# cat opennebula.repo [opennebula] nameopennebula baseurlhttps://downloads.opennebula.org/repo/5.6/CentOS/7/x86_64 enabled1 gpgkeyhttps…...
力扣第239题 c++滑动窗口经典题 单调队列
题目 239. 滑动窗口最大值 困难 提示 队列 数组 滑动窗口 单调队列 堆(优先队列) 给你一个整数数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。 返回 滑动窗口中的…...
华为云云耀云服务器L实例评测|华为云云耀云服务器docker部署srs,可使用HLS协议
华为云云耀云服务器L实例评测|华为云云耀云服务器docker部署srs,可使用HLS协议 什么是华为云云耀云L实例 云耀云服务器L实例,面向初创企业和开发者打造的全新轻量应用云服务器。提供丰富严选的应用镜像,实现应用一键部署&#x…...
jira流转issue条目状态transitions的rest实用脚本,issue状态改变调整
官方文档链接地址: POST Transition issue Performs an issue transition and, if the transition has a screen, updates the fields from the transition screen. sortByCategory To update the fields on the transition screen, specify the fields in the fiel…...
SpringBoot-17-MyBatis动态SQL标签之常用标签
文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…...
7.4.分块查找
一.分块查找的算法思想: 1.实例: 以上述图片的顺序表为例, 该顺序表的数据元素从整体来看是乱序的,但如果把这些数据元素分成一块一块的小区间, 第一个区间[0,1]索引上的数据元素都是小于等于10的, 第二…...
【杂谈】-递归进化:人工智能的自我改进与监管挑战
递归进化:人工智能的自我改进与监管挑战 文章目录 递归进化:人工智能的自我改进与监管挑战1、自我改进型人工智能的崛起2、人工智能如何挑战人类监管?3、确保人工智能受控的策略4、人类在人工智能发展中的角色5、平衡自主性与控制力6、总结与…...
React hook之useRef
React useRef 详解 useRef 是 React 提供的一个 Hook,用于在函数组件中创建可变的引用对象。它在 React 开发中有多种重要用途,下面我将全面详细地介绍它的特性和用法。 基本概念 1. 创建 ref const refContainer useRef(initialValue);initialValu…...
.Net框架,除了EF还有很多很多......
文章目录 1. 引言2. Dapper2.1 概述与设计原理2.2 核心功能与代码示例基本查询多映射查询存储过程调用 2.3 性能优化原理2.4 适用场景 3. NHibernate3.1 概述与架构设计3.2 映射配置示例Fluent映射XML映射 3.3 查询示例HQL查询Criteria APILINQ提供程序 3.4 高级特性3.5 适用场…...
如何为服务器生成TLS证书
TLS(Transport Layer Security)证书是确保网络通信安全的重要手段,它通过加密技术保护传输的数据不被窃听和篡改。在服务器上配置TLS证书,可以使用户通过HTTPS协议安全地访问您的网站。本文将详细介绍如何在服务器上生成一个TLS证…...
相机Camera日志分析之三十一:高通Camx HAL十种流程基础分析关键字汇总(后续持续更新中)
【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了:有对最普通的场景进行各个日志注释讲解,但相机场景太多,日志差异也巨大。后面将展示各种场景下的日志。 通过notepad++打开场景下的日志,通过下列分类关键字搜索,即可清晰的分析不同场景的相机运行流程差异…...
NXP S32K146 T-Box 携手 SD NAND(贴片式TF卡):驱动汽车智能革新的黄金组合
在汽车智能化的汹涌浪潮中,车辆不再仅仅是传统的交通工具,而是逐步演变为高度智能的移动终端。这一转变的核心支撑,来自于车内关键技术的深度融合与协同创新。车载远程信息处理盒(T-Box)方案:NXP S32K146 与…...
云原生周刊:k0s 成为 CNCF 沙箱项目
开源项目推荐 HAMi HAMi(原名 k8s‑vGPU‑scheduler)是一款 CNCF Sandbox 级别的开源 K8s 中间件,通过虚拟化 GPU/NPU 等异构设备并支持内存、计算核心时间片隔离及共享调度,为容器提供统一接口,实现细粒度资源配额…...
在 Visual Studio Code 中使用驭码 CodeRider 提升开发效率:以冒泡排序为例
目录 前言1 插件安装与配置1.1 安装驭码 CodeRider1.2 初始配置建议 2 示例代码:冒泡排序3 驭码 CodeRider 功能详解3.1 功能概览3.2 代码解释功能3.3 自动注释生成3.4 逻辑修改功能3.5 单元测试自动生成3.6 代码优化建议 4 驭码的实际应用建议5 常见问题与解决建议…...
