深入学习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
在这里插入图片描述

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

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

相关文章

多目标平衡黏菌算法(MOEOSMA)求解八个现实世界受约束的工程问题

目录 1 受约束的工程问题 1.1 减速器设计问题(Speed reducer design problem) 1.2 弹簧设计问题(Spring design problem) 1.3 静压推力轴承设计问题(Hydrostatic thrust bearing design problem) 1.4 振动平台设计问题(Vibrating platform design problem) 1.5 汽车侧面碰…

云安全【阿里云ECS攻防】

关于VPC的概念还请看&#xff1a;记录一下弹性计算云服务的一些词汇概念 - 火线 Zone-安全攻防社区 一、初始化访问 1、元数据 1.1、SSRF导致读取元数据 如果管理员给ECS配置了RAM角色&#xff0c;那么就可以获得临时凭证 如果配置RAM角色 在获取ram临时凭证的时候&#xff…

铁道货车通用技术条件

声明 本文是学习GB-T 5600-2018 铁道货车通用技术条件. 而整理的学习笔记,分享出来希望更多人受益,如果存在侵权请及时联系我们 90 mm90 mm。 B.2 制造要求 B.2.1 车体钢结构组成后&#xff1a; a) 敞车钢质侧、端板的平面度公差应小于或等于15 mm/m; 压型侧、端板的平面度…

python生成中金所期权行权价

参考沪深300股指期权的合约表&#xff0c;写一个工具函数&#xff1a; 使用方法 def get_format_option_gap(value: float, deviation: int 0): # 根据中证1000指数获取点位"""根据标准的行权价&#xff0c;生成不同档位的期权列表&#xff0c;适合中金所:…

[红明谷CTF 2021]write_shell %09绕过过滤空格 ``执行

目录 1.正常短标签 2.短标签配合内联执行 看看代码 <?php error_reporting(0); highlight_file(__FILE__); function check($input){if(preg_match("/| |_|php|;|~|\\^|\\|eval|{|}/i",$input)){ 过滤了 木马类型的东西// if(preg_match("/| |_||php/&quo…

最新AI智能创作系统源码V2.6.2/AI绘画系统/支持GPT联网提问/支持Prompt应用

一、AI创作系统 SparkAi创作系统是基于国外很火的ChatGPT进行开发的AI智能问答系统和AI绘画系统。本期针对源码系统整体测试下来非常完美&#xff0c;可以说SparkAi是目前国内一款的ChatGPT对接OpenAI软件系统。那么如何搭建部署AI创作ChatGPT&#xff1f;小编这里写一个详细图…

验证曲线(validation_curve)项目实战

验证曲线 validation_curve 一、简介 validation_curve验证曲线&#xff0c;可确定不同参数值下的训练和测试分数 根据指定参数的不同值计算估计器的得分 这与使用一个参数的网格搜索类似。不过&#xff0c;这也会计算训练得分&#xff0c;只是一个用于绘制结果的工具。 二、…

【AI视野·今日Robot 机器人论文速览 第四十五期】Mon, 2 Oct 2023

AI视野今日CS.Robotics 机器人学论文速览 Mon, 2 Oct 2023 Totally 42 papers &#x1f449;上期速览✈更多精彩请移步主页 Daily Robotics Papers Learning Decentralized Flocking Controllers with Spatio-Temporal Graph Neural Network Authors Siji Chen, Yanshen Sun, …

R语言中更改R包安装路径

看到这些包下载到我的C盘&#xff0c;我蛮不爽的&#xff1a; 所以决定毫不犹豫的改到D盘&#xff1a; 首先&#xff0c;我们需要在RStudio中新建一个初始启动文件&#xff1a; file.edit(~/.Rprofile) 然后去你喜欢的环境新建一个文件夹存放安装的包的位置&#xff0c;我喜欢…

uboot启动流程-涉及board_init_f 函数

一. uboot启动流程 _main 函数中会调用 board_init_f 函数&#xff0c;本文简单分析一下 board_init_f 函数。 二. board_init_f 函数 board_init_f 函数主要有两个工作&#xff1a; (1) 初始化一系列外设&#xff0c;比如串口、定时器&#xff0c;或者打印一些消息等。…

动态规划算法(2)--最大子段和与最长公共子序列

目录 一、最大子段和 1、什么是最大子段和 2、暴力枚举 3、分治法 4、动态规划 二、最长公共子序列 1、什么是最长公共子序列 2、暴力枚举法 3、动态规划法 4、完整代码 一、最大子段和 1、什么是最大子段和 子段和就是数组中任意连续的一段序列的和&#xff0c;而…

阿里云服务器方升架构、自研硬件、AliFlash技术创新

阿里云服务器技术创新&#xff1a;服务器方升架构及自研硬件、自研存储硬件AliFlash和阿里云异构计算加速平台&#xff0c;阿里云百科分享阿里云服务器有哪些技术创新&#xff1a; 目录 服务器技术创新 服务器方升架构及自研硬件 自研存储硬件AliFlash 阿里云异构计算加速…

【Excel】快速提取某个符号前面的数据内容

【问题描述】 在使用excel整理数据过程中&#xff0c;经常与需要调整数据后&#xff0c;进行使用。 例如凭证导出后&#xff0c;科目列是包含科目编码和科目名称的。 但由于要将数据复制到其他的导入模板上使用&#xff0c;对应的模板只需要科目编码&#xff0c;不需要科目名称…

常说的I2C协议是干啥的(电子硬件)

I2C&#xff08;Inter-Integrated circuit&#xff09;协议是电子传输信号中常用的一种协议。 它是一种两线式串行双向总线&#xff0c;用于连接微控制器和外部设备&#xff0c;也因为它所需的引脚数只需要两条&#xff08;CLK和DATA&#xff09;&#xff0c;硬件实现简单&…

Acwing 906. 区间分组

Acwing 906. 区间分组 知识点题目描述思路讲解代码展示 知识点 贪心 题目描述 思路讲解 这段代码是用来维护一个最小堆&#xff0c;以确保右边界不相交的区间被正确地保留在堆中。让我详细解释这段代码&#xff1a; heap.empty()&#xff1a;这个条件检查最小堆 heap 是否为…

【牛客网】JZ39 数组中出现次数超过一半的数字

题目 思路 思路1 将数组排序,再保证有结果的情况下,此时数组中间的数字就是想要的结果 思路2 在保证有结果的情况下,此时数组的的众数是数组长度的一半以上 所以我们可以通过抵消的做法来找到最终的结果 我们可以从头遍历这个数组,如果两个数不相同,则消去这两个数,最坏的…

Bug:elementUI样式不起作用、Vue引入组件报错not found等(Vue+ElementUI问题汇总)

前端问题合集&#xff1a;VueElementUI 1. Vue引用Element-UI时&#xff0c;组件无效果解决方案 前提&#xff1a; 已经安装好elementUI依赖 //安装依赖 npm install element-ui //main.js中导入依赖并在全局中使用 import ElementUI from element-ui Vue.use(ElementUI)如果此…

C++笔记之环形队列

C笔记之环形队列 code review! 文章目录 C笔记之环形队列1.概念I——摘自 https://mp.weixin.qq.com/s/HUn9TF09RZ-UJKYPR5ZXhA2.概念II——摘自 http://t.csdnimg.cn/72bng3.概念III—— 摘自https://mp.weixin.qq.com/s/9Ga502p1DLcc6o75JBQlDg4.概念IV—— 摘自https://mp…

基于SSM的网上药品售卖系统设计与实现

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;采用JSP技术开发 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#x…

Django之模板

一&#xff09;模板&#xff08;T&#xff09; 什么时候会使用模板呢&#xff1f; 仅对于Django这个框架来说&#xff0c;因为其是默认前后端不分离的框架&#xff08;前后端不分离值开发时前后端的代码在一起&#xff0c;不通过接口的方式连接&#xff0c;通过模板渲染的方式…