【Git】常用的Git操作集合
常用的Git操作集合
- 1. 分支操作
- 1.1 查看本地所有分支
- `git branch`
- 1.2 查看所有分支(包含本地+远程仓库)
- `git branch -a`
- 1.3 切换分支
- `git checkout test`
- 2. 常用基本操作
- 2.1 查看 `git` 各存储区内(文件)状态
- `git status`
- 2.2 查看工作区与暂存区文件差异
- `git diff`
- 2.3 临时存储/取消临时存储
- `git stash`
- `git stash pop`
- 2.4 查看 `git` 记录
- `git log`
- `git log --oneline`
- 3. 撤销操作
- 3.1 撤销add
- `git reset <fileName>`
- 3.2 撤销commit
- `git reset --soft HEAD^`
- `git reset --mixed HEAD^`
- `git reset --hard HEAD^`
- `git reset --hard HEAD~n`
- 3.3 撤销push到远程仓库的commit
- 3.3.1 先确定要取消的commit
- 3.3.2 取消本地仓库commit
- 3.3.3 将本地仓库的更改同步到远程仓
- 4. 合并 `commit`
- 4.1 确定要合并的commit的前一个commitId 值
- 4.2 执行 `git rebase -i <commitId>` 命令
- 4.3 执行 `git log` 命令查看commit合并情况
- 5. 将已提交的commit修改复制到另一个分支上
- 5.1 使用 `cherry-pick` 复制单个commit
- `git cherry-pick <commitId>`
- 5.2 使用 `cherry-pick` 复制多个commit
- `git cherry-pick <commitId1> <commitId2> ...`
1. 分支操作
1.1 查看本地所有分支
git branch

被
*标识的分支就是当前代码所在的分支,图示表明当前在develop分支。
1.2 查看所有分支(包含本地+远程仓库)
git branch -a

1.3 切换分支
git checkout test
切换到本地的test分支。

git checkout origin master: 切换到远程仓库的master分支。
2. 常用基本操作
2.1 查看 git 各存储区内(文件)状态
git status

2.2 查看工作区与暂存区文件差异
git diff

git diff命令还可以通过指定HEAD指针、版本、文件名等进行更具体的比较。
2.3 临时存储/取消临时存储
有时,在开发过程中,需要切换分支改BUG,但是当前功能又没开发完,也不适合提交,此时就可以将当前修改临时存储起来,切换分支后再去改BUG。
git stash
我们先使用git status看下git各区域的变更状态:

然后,我们执行git stash 命令后再执行git status观察下git各区域变更状态:

可以看到,差异只是在工作区,git stash 命令,将工作区的修改隐藏了,临时存储在一个特殊容器里面。
git stash pop
git stash pop命令取消git stash操作,将隐藏的对工作区内的修改进行复原。

2.4 查看 git 记录
git log
输入git log 命令会进入一个git提交记录显示窗口,可以上下翻页查找,输入q退出。


git log --oneline
跟上面的功能一样,只是显示的信息更加的简约、紧凑,我个人更喜欢这样用。

3. 撤销操作
3.1 撤销add
git reset <fileName>
撤销已经从工作区添加到暂存区,但是还没commit的文件。

我们可以看到,执行git reset 命令之后,已经add的文件又从暂存区回到了工作区。
我们也可以执行git reset . 取消所有在暂存区文件的add操作。
3.2 撤销commit
git reset --soft HEAD^
撤销commit操作,但是不撤销add操作。

可以看到,执行完git reset --soft HEAD^命令之后,已提交的修改回到了暂存区。
git reset --mixed HEAD^
撤销commit操作,同时撤销add操作,但是将修改保留在工作区。

可以看到,执行完git reset --mixed HEAD^命令之后,已提交的修改回到了工作区。
git reset --hard HEAD^
撤销commit操作,并撤销add操作,同时工作区也不保留修改。


可以看到,执行完git reset --hard HEAD^命令之后,已提交的修改没了,最新的commit也没了。
git reset --hard HEAD~n
撤销最近n次的commit操作,并撤销add操作,同时工作区也不保留修改。
可以根据我们的需求选择--hard, --soft 或者 --mixed选项,下面我们以n取2为例。

可以看到,执行完该命令后,我们提交的最新的2个commit完全消失了。
3.3 撤销push到远程仓库的commit
撤销push到远程仓库的commit的操作可分为以下3步:
3.3.1 先确定要取消的commit
git log --oneline
确定哪几个commit需要取消。

现在我要取消最新的2个commit,让commit哈希值为bd04cbb的commit成为最新的commit。
3.3.2 取消本地仓库commit
git reset --soft <commitId>
我们的commitId值取上一步确定的值,执行命令,结果如下。可以看到最新的2个commit记录没了。
根据我们的需求,
--soft选项也可以换成--hard或者--mixed,具体区别见3.2.

3.3.3 将本地仓库的更改同步到远程仓
git push origin <branchName>
此处branchName选择本地分支对应的远端分支,将对本地仓内该分支的修改同步到远程仓库。
--force选项也可以直接简写成-f

4. 合并 commit
4.1 确定要合并的commit的前一个commitId 值
使用git log --oneline 确定那些commit需要合并,我们这里要合并前2个commit。因此,我们要取第3个commitID为bd04cbb的值。

4.2 执行 git rebase -i <commitId> 命令
这里的 <commitId> 为上一步确定的 bd04cbb。

执行完该命令进入到一个vim编辑界面:

在前面未注释的部分的行首,我们只保留第一行的pick,其他行都改为s(代表squash,表示对应的commit被压缩)。退出编辑模式,输入wq! 保存退出。进入另一个vim 编辑框如下。该编辑框的内容为要合并的所有commit的message,我们现在需要将所有的commit message合并为一个。

修改如下后保存退出。

4.3 执行 git log 命令查看commit合并情况
此时我们使用git log 命令查看可以看到原来的2个commit已经被合并为一个新的commit。

5. 将已提交的commit修改复制到另一个分支上
我们在上一步在 test 分支提交了一个 commit(添加注释)。
此时我们切换到了 develop 分支上,现在我们要把在 test 分支上的改动,复制到 develop 分支上,此时我们就需要使用 cherry-pick 命令。
5.1 使用 cherry-pick 复制单个commit
git cherry-pick <commitId>
我们当前在 develop 分支上,对test分支上的commitId 为e5ac3d4 的commit 进行 cherry-pick。

我们从上图可以看到,其它分支上的修改被复制了过来,在develop分支上产生的新commit有新的commitId。
5.2 使用 cherry-pick 复制多个commit
git cherry-pick <commitId1> <commitId2> ...
我们现在在develop分支上,想把该分支上最新的2个commit复制到test分支上(3个及以上个commit也是同理)。

先切换到test分支上,在test分支上执行命令git cherry-pick a313ca3 9b2284e。

此时,我们再来看下commit 日志,看到多个commit已经被复制到test分支:

相关文章:
【Git】常用的Git操作集合
常用的Git操作集合 1. 分支操作1.1 查看本地所有分支git branch 1.2 查看所有分支(包含本地远程仓库)git branch -a 1.3 切换分支git checkout test 2. 常用基本操作2.1 查看 git 各存储区内(文件)状态git status 2.2 查看工作区与暂存区文件差异git dif…...
JavaScript库jquery的使用方法
"写更少,做更多"是jquery的设计理念,jquery是一个兼容多浏览器的JavaScript库,利用jquery的语法设计能使开发更便捷。 网页添加jquery的方法:1.从jquery.com下载库;2.从CDN中载入库(示例使用)&a…...
Vue (v-bind指令、el与data的两种写法、理解MVVM、数据代理、V-no事件处理、双向数据绑定V-model、登陆页面实现
V-bind指令 el与data两种写法 MVVM 数据代理 V-no事件处理 V-no用于监听DOM对象 双向数据绑定V-model v-model 指令用来在 input、select、textarea、checkbox、radio 等表单控件元素上创建双向数据绑定,根据表单上的值,自动更新绑定的元素的值。 按钮的…...
SpringBoot - SpringBoot手写模拟SpringBoot启动过程
依赖 建一个工程,两个Module: 1. springboot模块,表示springboot框架的源码实现 2. user包,表示用户业务系统,用来写业务代码来测试我们所模拟出来的SpringBoot 首先,SpringBoot是基于的Spring,所以我…...
40. 组合总和 II - 力扣(LeetCode)
题目描述 给定一个候选人编号的集合 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。 candidates 中的每个数字在每个组合中只能使用 一次 。 注意:解集不能包含重复的组合。 输入示例 candidates [10,1,2,7,…...
第15届蓝桥杯嵌入式省赛准备第二天总结笔记(使用STM32cubeMX创建hal库工程+按键输入)
一.查看电路图 按键是使用的PB0,PB1,PB2,PA0四个引脚,然后使用CubeMX配置引脚,4个脚都配置为输入模式和上拉。 程序生成之后把不用的删掉,需要的留下,这里我把函数名改了。 然后写按键扫描读取程序,这里参考的正点原子…...
【论文阅读】One For All: Toward Training One Graph Model for All Classification Tasks
目录 0、基本信息1、研究动机2、创新点——One For All :unique features3、准备4、具体实现4.1、用TAGs统一来自不同领域的图数据4.2、用NOI(NODES-OF-INTEREST)统一不同图任务4.2.1、NOI子图4.2.2、NOI提示结点 4.3、用于图的上下文学习&am…...
Python多线程爬虫——数据分析项目实现详解
前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家:https://www.captainbed.cn/z 「个人网站」:雪碧的个人网站 ChatGPT体验地址 文章目录 前言爬虫获取cookie网站爬取与启动CS…...
unity全局音量管理/全局音量设置与音量设置界面(含静音功能)
前言 本文将会介绍如何使用audiomixer实现全局音量控制,并且会介绍如何实现游戏内的含静音功能的音量设置界面。 本人也是个初学者,在看过一些关于音量管理的教程后,发现使用audiomixer实现全局音量控制可能是最方便、功能最完备、强大的&a…...
C++ vector 数组转换、查找、最大最小值、排序、排行的几种用法
C vector中常用到排序、取最值,一些场景可能还会要计算某个元素的排行,以下就是一些实际例子,精简、有效。 【1】会涉及到数组转vector: vector<int> v(arr, arr N); // N为数组size,可用sizeof(arr)/sizeof(i…...
vmware 安装Rocky-9.3系统
安装系统截图 安装完成,启动 查看版本和内核 开启远程登陆授权 1、编辑配置文件 #提升权限,输入su,并输入密码 su #编辑ssh文件开启root远程登陆 vi /etc/ssh/sshd_config找到以下内容:#PermitRootLogin prohibit-password 添加:…...
C++提高编程——模板
本专栏记录C学习过程包括C基础以及数据结构和算法,其中第一部分计划时间一个月,主要跟着黑马视频教程,学习路线如下,不定时更新,欢迎关注。 当前章节处于: ---------第1阶段-C基础入门 ---------第2阶段实战…...
单线程、同步、异步、预解析、作用域、隐式全局变量、对象创建、new
单线程 进程 cpu 资源分配的最小单位一个进程可以有多个线程 线程 cpu调度的最小单位线程建立在进程的建立基础上的一次程序的运行单位 线程分为:单线程 多线程 单线程:js是单线程 (同一个时间只能完成一个任务)多线程&…...
《设计模式的艺术》笔记 - 外观模式
介绍 外观模式中外部与一个子系统的通信通过一个统一的外观角色进行,为子系统中的一组接口提供一个一致的入口。外观模式定义了一个高层接口,这个接口使得子系统更加容易使用。外观模式又称为门面模式,它是一种对象结构型模式。 实现 myclas…...
sql 查询时间范围内的数据
要查询特定时间范围内的数据,您可以使用 SQL 中的 BETWEEN 运算符。以下是一个示例查询,它从名为 your_table 的表中检索在 start_date 和 end_date 之间创建的所有记录: SELECT * FROM your_table WHERE created_date BETWEEN start_date AN…...
TestNG中的@BeforeSuite注释
目录 什么是BeforeSuite注解? BeforeSuite带注释的方法何时执行? BeforeSuite annotation有什么用? 所以,是时候集思广益了 我们可以在一个类中使用多个BeforeSuite注释方法吗? BeforeSuite放在超类上时如何工作…...
[学习笔记]刘知远团队大模型技术与交叉应用L3-Transformer_and_PLMs
RNN存在信息瓶颈的问题。 注意力机制的核心就是在decoder的每一步,都把encoder的所有向量提供给decoder模型。 具体的例子 先获得encoder隐向量的一个注意力分数。 注意力机制的各种变体 一:直接点积 二:中间乘以一个矩阵 三:…...
图像处理工具包Pillow的使用分享
Pillow 是 Python 中一个流行的图像处理库,它是 PIL(Python Imaging Library)的一个友好的分支版本。Pillow 提供了许多功能,使得图像处理变得容易和方便。下面是一些基本用法和示例: 安装 Pillow 首先,你…...
python进程间通信——命名管道(Named Pipe、FIFO)
文章目录 Python中的命名管道:深入理解进程间通信1. 命名管道简介2. 创建和删除命名管道3. 写入命名管道4. 读取命名管道5. 示例:进程间通信write_to_pipe.pyread_from_pipe.py测试运行 6. 注意事项和限制命名管道的半双工机制命名管道读写任意一方未打开…...
03 OSPF 学习大纲
参考文章 1 初步认识OSPF的大致内容(第三课)-CSDN博客 2...
重构Sketch图层管理流程:RenameIt效率引擎突破设计协作瓶颈
重构Sketch图层管理流程:RenameIt效率引擎突破设计协作瓶颈 【免费下载链接】RenameIt Keep your Sketch files organized, batch rename layers and artboards. 项目地址: https://gitcode.com/gh_mirrors/re/RenameIt 在现代UI/UX设计工作流中,…...
顺利毕业!一个能读懂学校要求的AI论文助手
作为一名即将毕业的大四学生,写毕业论文这件事,就像一座大山压在我心头。选题没方向,文献看不懂,最要命的是,学校发的那个十几页的写作要求,看得我头都大了,生怕自己辛辛苦苦写出来,…...
电商数据采集API接口||合规优先、稳定高效、数据精准
一、API 类型选型(先选对,再做对)优先按 “官方 → 第三方聚合 → 自建” 顺序选择,平衡合规、成本与效率:表格API 类型代表平台核心优势适用场景注意事项官方开放 API淘宝 TOP、京东万象、拼多多开放平台、亚马逊 SP-…...
RWKV7-1.5B-g1a保姆级部署教程:离线加载+免外网依赖,中小企业AI落地首选
RWKV7-1.5B-g1a保姆级部署教程:离线加载免外网依赖,中小企业AI落地首选 1. 模型简介 rwkv7-1.5B-g1a 是基于新一代 RWKV-7 架构的多语言文本生成模型,专为中小企业AI落地场景优化设计。这个1.5B参数的轻量级模型在保持高质量生成能力的同时…...
HP-Socket创新项目原型迭代记录:变更、原因与效果
HP-Socket创新项目原型迭代记录:变更、原因与效果 【免费下载链接】HP-Socket High Performance TCP/UDP/HTTP Communication Component 项目地址: https://gitcode.com/gh_mirrors/hp/HP-Socket HP-Socket作为一款高性能TCP/UDP/HTTP通信组件,其…...
6个高效突破内容访问限制的开源工具使用指南
6个高效突破内容访问限制的开源工具使用指南 【免费下载链接】bypass-paywalls-chrome-clean 项目地址: https://gitcode.com/GitHub_Trending/by/bypass-paywalls-chrome-clean 在信息爆炸的数字时代,优质内容常常被付费墙限制访问。本文将系统介绍基于开源…...
进阶篇第5节:共享内存(三)——实战:优化矩阵乘法(Tiling技术)
第二篇进阶篇第5节:共享内存(三)——实战:优化矩阵乘法(Tiling技术) 从朴素到分块,从分块到极致——矩阵乘法的优化之路,就是CUDA性能优化的缩影 写在前面 矩阵乘法是CUDA优化中最经典的案例,没有之一。在筑基篇,我们实现了朴素版本和基础分块版本,性能从 252 GFLO…...
QRazyBox:5分钟解决二维码修复难题的专业工具
QRazyBox:5分钟解决二维码修复难题的专业工具 【免费下载链接】qrazybox QR Code Analysis and Recovery Toolkit 项目地址: https://gitcode.com/gh_mirrors/qr/qrazybox 二维码已经成为现代生活中无处不在的数字桥梁,但你是否遇到过这样的情况&…...
TinyMCE 5插件开发实战:手把手教你定制首行缩进功能(Vue版)
TinyMCE 5插件开发实战:手把手教你定制首行缩进功能(Vue版) 在内容创作领域,富文本编辑器的灵活性和扩展性往往决定了最终的用户体验。TinyMCE作为一款广受欢迎的富文本编辑器,其插件系统为开发者提供了无限可能。本文…...
避坑指南:JRTPLIB交叉编译时容易忽略的3个CMAKE参数(附实测解决方案)
避坑指南:JRTPLIB交叉编译时容易忽略的3个CMAKE参数(附实测解决方案) 在嵌入式开发领域,跨平台编译开源库是每个工程师的必修课。JRTPLIB作为实时传输协议(RTP)的经典实现,其ARM架构下的编译问题却常让开发者陷入"…...
