Git——命令集合
Git命令集合
1. 基本操作
1.1 创建版本库
- 初始化本地仓库:git init
- 添加文件到仓库:git add | git add file file2… | git add.
- 提交文件到本地仓库:git commit -m “message”
1.2 版本回退
- 查看状态: git status
- 查看全部修改状态:git diff
- 查看指定文件修改内容:git diff
- 回退到指定版本:git reset --hard commit_id
- 回退到上一个版本:git reset --hard HEAD^
- 回退到上上个版本:git reset --hard HEAD^^
- 回退n个版本:git reset --hard HEAD~n
- 查看详细提交历史:git log
- 查看简化提交历史:git log --pretty=online
- 查看分支合并图:git log --graph
- 查看命令历史:git reflog
1.3 撤销修改
-
丢弃工作区的修改(未提交值暂存区):
git checkout – file git restore
git checkout – .
git restore .
-
丢弃已添加到暂存区的修改
git reset HEAD
git restore --signed
git reset HEAD .
git restore --staged
1.4 删除文件
-
删除未添加到暂存区的文件:
显示将要删除的问加你和目录:git clean -n
删除文件和目录:git clean -df
删除文件:git clean -f git rm
2. 远程仓库
2.1 添加远程仓库
-
关联远程仓库:
git remote add origin
-
删除远程仓库:
git remote rm origin
-
查看远程仓库
git remote -v
-
推送提交到远程仓库
git push origin master #一般用于非首次推送
git push -u origin master #-u参数是将本地master分支与远程仓库master分支关联起来,一般用于第一次推送
2.2 从远程仓库克隆
- git clone
3. 分支管理
3.1 创建与合并分支
- 查看分支:git branch
- 创建分支:git branch
- 切换分支:git checkout
- 创建并切换到该分支:git checkout -b
- 合并指定分支到当前分支:git merge
- 删除本地已合并分支:git branch -d
- 删除远程分支:git push <远程仓库名> --delete <远程分支名>
- 推送本地分支到远程仓库并在远程仓库创建新分支:git push <远程仓库名> <本地分支名>:<远程分支名>
3.2 解决冲突
当Git无法自动合并分支时,就必须首先解决冲突。解决冲突后,再提交,合并完成。
解决冲突就是把Git合并失败的文件手动编辑为我们希望的内容,再提交。
查看分支合并图:
git log --graph
冲突的产生一般都是这两种情况:
- 远程仓库的代码落后于本地仓库
- 远程仓库的代码远超本地仓库
说明
冲突是如何表示的:
当产生合并冲突时,该部分会以 <<<<<<< , ======= 和 >>>>>>> 表示。在 ======= 之前的部分是当前分支这边的情况,在 ======= 之后的部分是传入分支的情况。
如何解决冲突
在看到冲突以后,你可以选择以下两种方式:
- 决定不合并。这时,唯一要做的就是重置 index 到 HEAD 节点。 git merge --abort 用于这种情况。
- 解决冲突。 Git 会标记冲突的地方,解决完冲突的地方后使用 git add 加入到 index 中,然后使用 git commit 产生合并节点。
你可以用以下工具来解决冲突:
- 使用合并工具。 git mergetool 将会调用一个可视化的合并工具来处理冲突合并。
- 查看差异。 git diff 将会显示三路差异(三路合并中所采用的三路比较算法)。
- 查看每个分支的差异。 git log --merge -p
将会显示 HEAD 版本和 MERGE_HEAD 版本的差异。 - 查看合并前的版本。 git show :1:文件名 显示共同祖先的版本, git show :2:文件名 显示当前分支的 HEAD 版本, git show :3:文件名 显示对方分支的MERGE_HEAD 版本。
3.3 Bug分支
- 暂存工作区状态:git stash
- 查看暂存的工作区状态:git stash list
- 恢复全部暂存状态,但不删除暂存内容:git stash apply
- 恢复指定暂存状态,但不删除暂存内容:git stash apply stash@{}
- 删除暂存内容:git stash drop
- 恢复暂存状态,同时删除暂存内容:git stash pop
- 复制一个特定的提交到当前分支:git cherry-pick <commit_id>
说明
修复bug时,我们会通过创建新的bug分支进行修复,然后合并,最后删除;
当手头工作没有完成时,先把工作现场 git stash 一下,然后去修复bug,修复后,再 git stash pop
在master分支上修复的bug,想要合并到当前dev分支,可以用 git cherry-pick <commit_id> 命令,把bug提交的修改“复制”到当前分支
3.4 Feature分支
- 强制删除分支(会丢失分支上的修改):git branch -D
说明
开发一个新feature,最好新建一个分支;
如果要丢弃一个没有被合并过的分支,可以通过 git branch -D 强行删除。
3.5 多人协作
-
查看远程仓库信息:git remote
-
查看远程仓库详细信息:git remote -v
-
与远程仓库代码同步:git pull # git pull = git fetch + git merge
-
在本地创建和远程分支对应的分支:
git checkout -b branch-name origin/branch-name
git switch -c branch-name origin/branch-name
-
将本地分支与远程仓库关联:git branch --set-upstream-to origin/
-
推送本地分支到远程仓库:git push origin
3.6 Rebase变基
- 变基(衍合):git rebase
- 放弃变基:git rebase --abort
- 解决冲突之后继续变基:git rebase --continue
说明
rebase操作可以把本地未push的分叉提交历史整理成直线;
rebase的目的是使得我们在查看历史提交的变化时更容易,因为分叉的提交需要三方对比。
4.标签管理
4.1 创建标签
- 新建标签(指向最新的commit_id):git tag <tag_name>
- 新建标签(指向特定commit_id):git tag <tag_name> <commit_id>
- 查看所有标签:git tag
- 显示某个标签的详细信息:git show <tag_name>
- 新建带有说明的标签:git tag -a <tag_name> -m “说明” <commit_id>
4.2 操作标签
- 删除指定本地标签:git tag -d <tag_name>
- 删除指定远程标签:git push origin :refs/tags/<tag_name>
- 推送一个本地标签:git push origin <tag_name>
- 推送全部未推送过的本地标签:git push origin --tags
5.git场景处理
5.1 fatal: refusing to merge unrelated histories
有时在pull或merge时会出现下述错误:
fatal: refusing to merge unrelated histories
解决办法:
git merge origin/master *--allow-unrelated-histories*
结果如下:
$ git merge origin/master *--allow-unrelated-histories*
Already up to date!
Merge made by the 'recursive' strategy.
只需要在命令的最后面添加 --allow-unrelated-histories ,这句话是告诉Git允许不相关历史合并
5.2 git merge origin master与merge origin/master
git merge origin master和git merge origin/master的区别
# 将origin merge 到 master 上
git merge origin master# 将origin上的master分支 merge 到当前 branch 上
git merge origin/master
相关文章:
Git——命令集合
Git命令集合 1. 基本操作 1.1 创建版本库 初始化本地仓库:git init添加文件到仓库:git add | git add file file2… | git add.提交文件到本地仓库:git commit -m “message” 1.2 版本回退 查看状态: git status查看全部修改…...
python 数据可视化折线图练习(下:代码演示)
根据上篇对三国疫情情况数据的罗列,构建折线图完成数据展示。(示例如下) 接下来是具体代码演示 import json from pyecharts.charts import Line from pyecharts.options import TitleOpts , LegendOpts , ToolboxOpts ,VisualMapOpts , T…...
深入探索 Go 1.18 的 debug/buildinfo:构建信息的获取与应用
标题:深入探索 Go 1.18 的 debug/buildinfo:构建信息的获取与应用 引言 Go 语言自 1.18 版本起,引入了对构建信息的标准化处理,这一特性极大地简化了获取程序构建信息的过程。debug/buildinfo 包提供了访问 Go 二进制文件中嵌入…...
Nios II的BSP Editor
1.菜单打开BSP Editor (1) (2) (3) 项目文件夹 -> software文件夹 -> ... _bsp文件夹 -> settings.bsp文件 2.文件打开BSP Editor 选中项目文件,右键,Nios II -> …...
Android-自适用高度的ViewPager
需求 在项目中,我们常常遇到需要动态调整 ViewPager 的高度,以适应其内容大小的需求。默认情况下,ViewPager 的高度是固定的,无法根据每个页面的内容高度进行调整。这会导致在内容高度不一致时,出现不必要的空白区域或…...
代码随想录day38|| 322零钱兑换 279完全平方数 139单词拆分
322零钱兑换 力扣题目链接 题目描述: 给你一个整数数组 coins ,表示不同面额的硬币;以及一个整数 amount ,表示总金额。 计算并返回可以凑成总金额所需的 最少的硬币个数 。如果没有任何一种硬币组合能组成总金额,…...
Cesium天空盒子(Skybox)制作(js代码)和显示
介绍 在Cesium中,星空背景是通过天空盒子方式(6张图片)来显示的,原生的图片分辨率太低,本项目用于生成天空盒子的6张图片。最终生成的6个图片大小约为500kb(每个),格式为jpg,总共的恒星数目约为…...
JAVA中的缓冲流BufferedInputStream
在Java中,BufferedInputStream 是一种用于包装其他输入流(如 FileInputStream)的过滤流。它通过内部缓冲区机制提高了输入流处理的效率。使用缓冲流可以减少读取数据的次数,因为每次从输入流读取数据时,BufferedInputS…...
WindowContainerTransaction类详解(一)
1、WindowContainerTransaction是什么: windowContainerTransaction类的对象是用来存储对windowContainer的修改的一个集合,windowContainer。因为应用侧是无法直接操作windowContainer的,如果应用侧需要修改windowContainer的话,…...
安装NFS扩展
#添加helm源 helm repo add nfs-subdir-external-provisioner https://kubernetes-sigs.github.io/nfs-subdir-external-provisioner #创建个namespace(可选,主要是为了查看资源方便) kubectl create ns nfs-sc-default #使用helm安装(10.1.129.86为NFS地址,/home/data/nfs…...
计算机网络——运输层(进程之间的通信、运输层端口,UDP与TCP、TCP详解)
运输层协议概述 进程之间的通信 运输层向它上面的应用层提供通信服务。 当网络边缘部分的两台主机使用网络核心部分的功能进行端到端的通信时,都要使用协议栈中的运输层;而网络核心部分中的路由器在转发分组时只用到下三层的功能。 Q1:我们…...
代码随想录算法训练营第一天 | 二分查找
文章目录 Leetcode704 二分查找二分法的使用前提:区间选择其他注意事项 Leetcode27 移除元素解题思路:优化思路 Leetcode704 二分查找 链接:https://leetcode.cn/problems/binary-search/ 代码随想录: https://programmercarl.com/ 时间复杂度: O(logN) 空间复杂度:…...
python相关知识
1、注释 共有三种:#、 、””” ””” 2、数据类型 整数、浮点、字符串、布尔、列表、元组、集合、字典 num1 666、num2 3.14、t1 True、t2 False、 列表:list [1,2,3,4] 元组:tuple (11,aaa,ddd,3) 字典:dict {li…...
Visual Studio 2022 LNK2001无法解析的外部符号 _wcscat_s 问题记录
ANSI C程序中,用到了wcsrchr、wcsncpy_s、wcscat_s、wcscpy_s等几个字符串函数,但是编译时提示: 错误 LNK2001 无法解析的外部符号 _wcscat_s 查了挺多帖子,没有解决。 https://bbs.csdn.net/topics/250012844 解决VS编译…...
Java高并发处理机制
高并发处理的思路: 扩容:水平扩容、垂直扩容缓存:将基础的数据放入缓存进行处理使用SpringCloud的注册中心,分服务注册到同一个注册中心,服务器检测使用Spring的熔断操作,检测服务器的心跳那个正常随机跳转…...
7 数据存储单位,整型、浮点型、字符型、布尔型数据类型,sizeof 运算符
目录 1 数据类型的分类 2 数据存储单位 2.1 位 2.2 字节 2.3 其余单位 3 整数类型 3.1 基本介绍 3.2 整型的类型 3.2.1 整数类型多样性的原因 3.2.2 整型类型之间的相对大小关系 3.3 整型注意事项 3.4 字面量后缀 3.5 格式占位符 3.6 案例:声明并输出…...
导游职业资格考试真题题库
导游职业资格考试真题题库 80.重庆有"雾都"之称。壁山区的()全年雾日多204天,堪称"世界之最"。 A.枇杷山 B.雾灵山 C.云雾山 D.四姑娘山 答案:C 81.我国最具热带海洋气候特色的地方为()。 A.广西壮族…...
【Rust】使用开源项目搭建瓦片地图服务
本文通过获取在线和离线地图数据,使用开源Rust项目搭建瓦片地图服务,并使用DevExpress的MapControl控件使用自建地图服务 获取地图数据 获取地图数据有很多种方式,这里分别用在线和离线地图数据举例说明 在线下载瓦片地图 打开在线瓦片地…...
【面试宝典】mysql常见面试题总结(上)
一、MySQL 中有哪几种锁? MySQL中的锁机制是数据库并发控制的重要组成部分,它用于管理多个用户对数据库资源的访问,确保数据的一致性和完整性。MySQL中的锁可以根据不同的分类标准进行分类,以下是一些常见的分类方式及对应的锁类…...
第1章 初识C语言
第1章 初识C语言 1.1 C语言概述 1.1.1 C语言的发展历史 C语言的原型为ALGOL 60语言(也称A语言)。 1963年 剑桥大学将ALGOL 60语言发展成为GPL语言。 1967年 剑桥大学的Matin Richards简化GPL,产生了BGPL语言。 1970年 美国贝尔实验室的Ken…...
docker详细操作--未完待续
docker介绍 docker官网: Docker:加速容器应用程序开发 harbor官网:Harbor - Harbor 中文 使用docker加速器: Docker镜像极速下载服务 - 毫秒镜像 是什么 Docker 是一种开源的容器化平台,用于将应用程序及其依赖项(如库、运行时环…...
树莓派超全系列教程文档--(62)使用rpicam-app通过网络流式传输视频
使用rpicam-app通过网络流式传输视频 使用 rpicam-app 通过网络流式传输视频UDPTCPRTSPlibavGStreamerRTPlibcamerasrc GStreamer 元素 文章来源: http://raspberry.dns8844.cn/documentation 原文网址 使用 rpicam-app 通过网络流式传输视频 本节介绍来自 rpica…...
【磁盘】每天掌握一个Linux命令 - iostat
目录 【磁盘】每天掌握一个Linux命令 - iostat工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景 注意事项 【磁盘】每天掌握一个Linux命令 - iostat 工具概述 iostat(I/O Statistics)是Linux系统下用于监视系统输入输出设备和CPU使…...
在 Nginx Stream 层“改写”MQTT ngx_stream_mqtt_filter_module
1、为什么要修改 CONNECT 报文? 多租户隔离:自动为接入设备追加租户前缀,后端按 ClientID 拆分队列。零代码鉴权:将入站用户名替换为 OAuth Access-Token,后端 Broker 统一校验。灰度发布:根据 IP/地理位写…...
04-初识css
一、css样式引入 1.1.内部样式 <div style"width: 100px;"></div>1.2.外部样式 1.2.1.外部样式1 <style>.aa {width: 100px;} </style> <div class"aa"></div>1.2.2.外部样式2 <!-- rel内表面引入的是style样…...
unix/linux,sudo,其发展历程详细时间线、由来、历史背景
sudo 的诞生和演化,本身就是一部 Unix/Linux 系统管理哲学变迁的微缩史。来,让我们拨开时间的迷雾,一同探寻 sudo 那波澜壮阔(也颇为实用主义)的发展历程。 历史背景:su的时代与困境 ( 20 世纪 70 年代 - 80 年代初) 在 sudo 出现之前,Unix 系统管理员和需要特权操作的…...
工业自动化时代的精准装配革新:迁移科技3D视觉系统如何重塑机器人定位装配
AI3D视觉的工业赋能者 迁移科技成立于2017年,作为行业领先的3D工业相机及视觉系统供应商,累计完成数亿元融资。其核心技术覆盖硬件设计、算法优化及软件集成,通过稳定、易用、高回报的AI3D视觉系统,为汽车、新能源、金属制造等行…...
CMake 从 GitHub 下载第三方库并使用
有时我们希望直接使用 GitHub 上的开源库,而不想手动下载、编译和安装。 可以利用 CMake 提供的 FetchContent 模块来实现自动下载、构建和链接第三方库。 FetchContent 命令官方文档✅ 示例代码 我们将以 fmt 这个流行的格式化库为例,演示如何: 使用 FetchContent 从 GitH…...
【JavaSE】绘图与事件入门学习笔记
-Java绘图坐标体系 坐标体系-介绍 坐标原点位于左上角,以像素为单位。 在Java坐标系中,第一个是x坐标,表示当前位置为水平方向,距离坐标原点x个像素;第二个是y坐标,表示当前位置为垂直方向,距离坐标原点y个像素。 坐标体系-像素 …...
【碎碎念】宝可梦 Mesh GO : 基于MESH网络的口袋妖怪 宝可梦GO游戏自组网系统
目录 游戏说明《宝可梦 Mesh GO》 —— 局域宝可梦探索Pokmon GO 类游戏核心理念应用场景Mesh 特性 宝可梦玩法融合设计游戏构想要素1. 地图探索(基于物理空间 广播范围)2. 野生宝可梦生成与广播3. 对战系统4. 道具与通信5. 延伸玩法 安全性设计 技术选…...
