Git 进阶 高级用法,重要命令记录

本篇文章用于记录Git高级用法,新手可以看我的另一篇文章:Git基础教学。

Git
在这里插入图片描述
git fetch 是git pull 的细分步骤,git pull 包含了git fetch
git pull origin master
上述命令其实相当于git fetch + git merge
在实际使用中,git fetch更安全一些
因为在merge前,我们可以查看更新情况,然后再决定是否合并

git clone git pull 区别:
git clone 直接把整个项目下载下来,里面包括项目.git 文件,会搞出来两个.git文件;而git pull 需要 git remote add 之后才可以 只有一个.git文件。

git fetch 实战用途:用于获取远程仓库各个分支的提交信息,但不会主动合并到工作区
git fetch origin 下载远程仓库所有分支的提交
git fetch origin + 分支名字 只同步某个分支的提交
git merge origin/分支名 在当前分支合并特定远程分支的提交
git branch 查看本地仓库分支
git branch -r 查看远程仓库分支
git branch -a 查看所有仓库分支
删除本地远程仓库分支信息
git branch -r -d + origin/仓库分支名字
在这里插入图片描述

切换分支 git checkout + 分支名字
创建分支 git checkout -b + 分支名字
删除本地分支 git branch -d + 分支名字
git fetch 没merge前强制删除:git branch -D + 分支名字
删除远程分支 git push origin --delete + 分支名字

git配置远程仓库:
git remote -v 查看当前仓库有没有匹配远程仓库
git remote add 远程仓库别名(一般第一个常取用origin) SSH协议地址
例子:git remote add origin git@192.168.1.27:Android/A600.git
git remote rm 远程仓库别名

ssh密钥生成命令:
ssh-keygen -t rsa -C “chenlangl@outlook.com”

git log 命令是针对一个分支,或者只有连续相等commit信息的不同分支使用, 用处是根据tag 拉分支,不管是从高往低打tag,还是从低往高打tag都行。
这句话很抽象,是高度总结。
git log --pretty==oneline 每个提交只打印一行
git log --oneline 在上一个命令的基础上,hash值只显示一部分
git log --graph --all 查看所有分支演进图
git log --graph 查看当前分支演进图
git fetch + git log --graph --all 可以查看整个项目所有分支的演进图

git tag 用于 标记一些 重要节点版本,以便于在重要版本上进行二次开发。
git tag : 直接列出所有的标签
git tag -l xxxx : 可以根据 xxxx 进行标签的筛选
git show 标签名 : 查看标签的信息,(轻量标签 和 附注标签 的信息是不一样的)
创建 轻量tag:
git tag 标签名 : 直接给当前的提交版本创建一个【轻量标签】
git tag 标签名 提交版本号 :给指定的提交版本创建一个 【轻量标签】 提交版本号指的就是提交hash值
创建 附注tag:
-a : 理解为 annotated 的首字符,表示 附注标签
-m : 指定附注信息
git tag -a 标签名称 -m 附注信息 :直接给当前的提交版本创建一个 【附注标签】
git tag -a 标签名称 提交版本号 -m 附注信息 :给指定的提交版本创建一个【附注标签】
删除tag:
git tag -d 标签名称 : 删除指定名称的标签
推送 tag 到远程仓库:
默认情况下,git push 命令并不会把标签推送到远程仓库中。
因此,我们必须 手动地将 本地的标签 推送到远程仓库中。
git push origin 标签名称 : 将指定的标签上传到远程仓库
git push origin --tags : 将所有不在远程仓库中的标签上传到远程仓库

本地选定提交打tag:git tag +name +hash点

删除远程仓库上的标签同样也需要手动执行:
$ git push origin :regs/tags/标签名称
or
$ git push origin --delete 标签名称
两个命令一样,都是删除指定的标签
打tag的真正作用:“检出标签” 说人话就是,可以以一个tag点为基础版本拉出一个分支。
git checkout -b +分支名称 +标签名称

git cherry-pick
常规用法:git cherry-pick + hash值(所谓的commit id)
在cherry-pick操作中,可能会遇到冲突。当Git无法自动解决冲突时,我们需要手动解决冲突。当冲突发生时,Git会将冲突的文件标记为“Unmerged”,我们需要在文件中手动解决冲突,并使用以下命令标记冲突已解决:
git add 解决冲突之后的文件,继续cherry-pick操作:
git cherry-pick --continue


git merge
合并远程分支一般先get fetch origin ,再使用git merge +origin/分支名 选择合并哪个分支的内容
本地merge更简单了,直接git merge + 分支名。
git merge有个缺点就是,不同的分支合并,除了提交的hash点,会产生新的merge点。

git rebase
是git merge进阶版本,使用rebase命令 git log --graph的图上不会有交叉点,也就是合入的分支不会产生新的merge点。
一般用法:举个例子,将 branch4分支的代码rebase到master分支上。
git checkout branch4
使用rebase命令把自己的commit信息复制到master分支上
git rebase master
然后再回到master分支,merge branch4分支即可,这样就不会有merge点
git checkout master
git merge branch4

git show
查看某次提交 涉及的文件 及具体的修改内容:git show +hash值
仅仅查看某次提交涉及了哪些文件,并不查看具体修改内容:git show + hash值 + --stat

git blame

git config --list 查看所有的配置信息
git config --global --list 查看全局配置信息
git config --local --list 查看当前仓库的配置信息
–global 是当前用户的
–system 是整个系统的
–local 是当前项目的

git diff
git diff --cached 比较暂存区和本地仓库的区别
git diff 查看当前工作区和本地仓库的区别
git diff + hash值,查看某一次提交和没提交前的区别
git diff + hash1 + hash2 查看hash1 到hash2之间的区别
git diff > all.diff 输出当前工作区的diff文件
git diff 的知识还包括“打path”,后续再补充

git reset --soft HEAD^ 将上一次 commit提交 回退到未提交状态,也就是将一笔提交从暂存区,还原到工作区。
git reset --soft + hash值 将本地的提交信息回退到指定的hash值,注意只是回退了提交信息,但是代码没有改动
git reset --hard + hash值 回退到指定hash点,commit信息和代码提交都一起回退

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

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

相关文章

C#,排列组合的堆生成法(Heap’s Algorithm for generating permutations)算法与源代码

1 排列组合的堆生成法 堆生成算法用于生成n个对象的所有组合。其思想是通过选择一对要交换的元素,在不干扰其他n-2元素的情况下,从先前的组合生成每个组合。 下面是生成n个给定数的所有组合的示例。 示例: 输入:1 2 3 输出&a…

解决Gradle下载过慢问题的有效方式:使用国内镜像站点

前言 在开发过程中,我们经常会遇到Gradle下载速度缓慢或超时的问题。作为一个强大而流行的构建工具,Gradle是许多项目中必不可少的一部分。然而,由于官方下载地址可能受网络限制影响,导致下载速度较慢。针对这个问题,…

数字化转型导师坚鹏:科技创新产业发展研究及科技金融营销创新

科技创新产业发展研究及科技金融营销创新 课程背景: 很多银行存在以下问题: 不清楚科技创新产业的发展现状? 不知道科技金融有哪些成功的案例? 不知道科技金融如何进行营销创新? 课程特色: 以案例…

如何在Mapbox GL中处理大的GEOJSON文件

Mapbox GL可以将 GeoJSON 数据由客户端(Web 浏览器或移动设备)即时转换为 Mapbox 矢量切片进行显示和处理。本文的目的是教大家如何有效加载和渲染大型 GeoJSON 源,并优化渲染显示速度,增强用户体验,减少客户端卡顿问题。本文以Mapbox 为例,至于其它框架原理大致相同,可…

【神经网络与深度学习】LSTM(Long Short-Term Memory)神经网络模型

概述 LSTM(Long Short-Term Memory)是一种特殊的循环神经网络(RNN)结构,通常被用于处理和学习时间序列数据。因此,LSTM属于深度学习领域中的一种神经网络模型。 在深度学习中,LSTM被广泛应用于…

Redis基础篇:初识Redis(认识NoSQL,单机安装Redis,配置Redis自启动,Redis客户端的基本使用)

目录 1.认识NoSQL2.认识Redis3.安装Redis1.单机安装Redis2.配置redis后台启动3.设置redis开机自启 4.Redis客户端1.Redis命令行客户端2.图形化桌面客户端 1.认识NoSQL NoSQL(Not Only SQL)数据库是一种非关系型数据库,它不使用传统的关系型数…

SpringBoot项目没有启动按键

问题一&#xff1a; pom文件正常&#xff0c;但是springboot包报红&#xff0c;同时Plugin ‘org.springframework.boot:spring-boot-maven-plugin:‘ not found报红 解决办法&#xff1a; 无法识别使用哪个版本的 spring-boot-maven-plugin 包 <build><plugins>&…

【脚本玩漆黑的魅影】寂雨镇全自动练级

文章目录 原理全部代码 原理 老样子。 治疗路径&#xff0c;练级路径。 def zhi_liao(): # 去治疗walk(RIGHT)walk(RIGHT)press(UP, 0.4)for i in [1, 2, 3, 4]:press(A)for i in [1, 2, 3, 4]:press(B)press(DOWN, 0.4)press(LEFT) def chu_qu(): # 右逛c.press(B)press(…

备战蓝桥杯Day25 - 二叉搜索树

一、基本概念 二叉搜索树&#xff08;Binary Search Tree&#xff09;&#xff0c;又称为二叉查找树或二叉排序树&#xff0c;是一种具有特定性质的二叉树。 定义&#xff1a;二叉搜索树可以是一棵空树&#xff0c;也可以是具有以下特性的非空二叉树&#xff1a; 若其左子树不…

denied: requested access to the resource is denied报错解决

Docker 镜像在文件中包含一组指令&#xff0c;可在 Docker 容器中执行代码。大多数情况下&#xff0c;在创建 docker 镜像之后&#xff0c;当尝试将镜像推送到远程仓库时&#xff0c;会发生这种类型的报错“Docker denied: requested access to the resource is denied” 由于错…

Glip模型

Yolos 完全使用Transformer做目标检测 Detr 先使用CNN提取特征然后再使用transformerDetr和Yolos共同的缺点&#xff1a;需要事先知道所有的类别 Glip Zero-shot, 目标检测的类别可以不在训练类别中 目标框进行视觉编码&#xff0c;然后和文本进行匹配文本和视觉特征是通…

【MySQL | 第四篇】区分SQL语句的书写和执行顺序

文章目录 4.区分SQL语句的书写和执行顺序4.1书写顺序4.2执行顺序4.3总结4.4扩充&#xff1a;辨别having与where的异同&#xff1f;4.5聚合查询 4.区分SQL语句的书写和执行顺序 注意&#xff1a;SQL 语句的书写顺序与执行顺序不是一致的 4.1书写顺序 SELECT <字段名> …