深入学习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.hqwc.cn/news/123873.html

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

相关文章

定时任务管理平台青龙 QingLong

一、关于 QingLong 1.1 QingLong 介绍 青龙面板是支持 Python3、JavaScript、Shell、Typescript 多语言的定时任务管理平台&#xff0c;支持在线管理脚本和日志等。其功能丰富&#xff0c;能够满足大部分需求场景&#xff0c;值得一试。 主要功能 支持多种脚本语言&#xf…

从零开始的C++(四)

上篇链接&#xff1a;http://t.csdnimg.cn/3nyT9 1.拷贝构造函数&#xff1a; 上篇中介绍了析构函数&#xff0c;即在对象销毁时自动调用的函数&#xff0c;常用于含有malloc、fopen等成员变量的对象。然而&#xff0c;在将对象做函数实参进行值传递的时候&#xff0c;可能会…

【算法训练-贪心算法 一】买卖股票的最佳时机II

废话不多说&#xff0c;喊一句号子鼓励自己&#xff1a;程序员永不失业&#xff0c;程序员走向架构&#xff01;本篇Blog的主题是【贪心算法】&#xff0c;使用【数组】这个基本的数据结构来实现&#xff0c;这个高频题的站点是&#xff1a;CodeTop&#xff0c;筛选条件为&…

简化数据库操作:探索 Gorm 的约定优于配置原则

文章目录 使用 ID 作为主键数据库表名TableName临时指定表名列名时间戳自动填充CreatedAtUpdatedAt时间戳类型Gorm 采用约定优于配置的原则,提供了一些默认的命名规则和行为,简化开发者的操作。 使用 ID 作为主键 默认情况下,GORM 会使用 ID 作为表的主键: type User st…

十四天学会C++之第三天(数组和字符串)

1. 数组的定义和初始化 数组是一种由相同数据类型的元素组成的集合&#xff0c;这些元素按照一定的顺序存储在连续的内存位置上。数组的大小在创建时是固定的&#xff0c;无法在运行时改变。 在C中&#xff0c;数组的定义和声明非常简单。定义一个数组&#xff1a; 数据类型…

(SAR)Sentinel-1影像自动下载

基于ASF网站提供的python代码&#xff0c;实现Sentinel-1影像的自动下载&#xff1b; 1、登录ASF网站 登录Sentinel-1影像ASF网站&#xff1a;https://search.asf.alaska.edu/&#xff1b; 点击网站最右侧Sign in图标&#xff0c;进行用户注册&#xff1b; 注册完用户之后&…

宠物医院必备,介绍一款宠物疫苗接种管理软件

在当今社会&#xff0c;养宠物已经成为越来越多人的生活方式&#xff0c;宠物疫苗接种已是宠物医院的重要工作&#xff0c;但是目前绝大多数的宠物医院对疫苗接种的管理&#xff0c;还是采取人工登记方式&#xff0c;不仅效率低下&#xff0c;而且无法做到疫苗接种到期自动提醒…

如何使用ArcGIS Pro制作标准地图样式国界

相信大家都浏览过标准地图服务提供的标准地图&#xff0c;不知道你有没有想过尝试制作里面的国界&#xff0c;这里为大家介绍一下制作方法&#xff0c;希望能对你有所帮助。 制作已定国界 在地图数据内&#xff0c;国界分为已定国界、未定国界和海岸线&#xff0c;我们先对已定…

基于蜉蝣优化的BP神经网络(分类应用) - 附代码

基于蜉蝣优化的BP神经网络&#xff08;分类应用&#xff09; - 附代码 文章目录 基于蜉蝣优化的BP神经网络&#xff08;分类应用&#xff09; - 附代码1.鸢尾花iris数据介绍2.数据集整理3.蜉蝣优化BP神经网络3.1 BP神经网络参数设置3.2 蜉蝣算法应用 4.测试结果&#xff1a;5.M…

【算法训练-二分查找 一】二分查找、在排序数组中查找元素的第一个和最后一个位置

废话不多说&#xff0c;喊一句号子鼓励自己&#xff1a;程序员永不失业&#xff0c;程序员走向架构&#xff01;本篇Blog的主题是螺旋矩阵&#xff0c;使用【二维数组】这个基本的数据结构来实现 二分查找【EASY】 从最简单的二分查找入手&#xff0c;进而开始解决一系列其变体…

Linux:minishell

目录 1.实现逻辑 2.代码及效果展示 1.打印字符串提示用户输入指令 2.父进程拆解指令 3.子进程执行指令,父进程等待结果 4.效果 3.实现过程中遇到的问题 1.打印字符串的时候不显示 2.多换了一行 3.cd路径无效 4.优化 1.ll指令 2.给文件或目录加上颜色 代码链接 模…

基于SpringBoot的流浪动物管理系

基于SpringBoot的流浪动物管理系的设计与实现&#xff0c;前后端分离 开发语言&#xff1a;Java数据库&#xff1a;MySQL技术&#xff1a;SpringBootMyBatisVue工具&#xff1a;IDEA/Ecilpse、Navicat、Maven 系统展示 首页 后台登陆界面 管理员界面 摘要 基于Spring Boot的…