【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分支:

在这里插入图片描述

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

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

相关文章

【记录】解决 git 仓库突然出现连接失败

问题描述 今天在 push 代码代码的时候突然发现无法 push(但是我可以正常打开 Gihub)&#xff0c;这可不行&#xff0c;我可是 git 的重度使用者&#x1f60d;&#xff0c;我所有的代码都托管在了 Github 上&#xff0c;没有它我的日子怎么活啊&#xff01;&#xff01;&#x…

2024最新版Python 3.12.1安装使用指南

2024最新版Python 3.12.1安装使用指南 Installation and Configuration Guide to the latest version Python 3.12.1 in 2024 By Jackson Python编程语言&#xff0c;已经成为全球最受欢迎的编程语言之一&#xff1b;它简单易学易用&#xff0c;以标准库和功能强大且广泛外挂…

C++-类和对象(3)

1. 再谈构造函数 1.1 构造函数体赋值 我们在创建一个对象时&#xff0c;编译器会调用该对象的构造函数对该对象的成员进行初始化。 class Date { public:Date(int year, int month, int day){_year year;_month month;_day day;} private:int _year;int _month;int _day…

【SpringCloud Alibaba】 介绍及微服务模块搭建

文章目录 SpringCloud Alibaba 介绍主要功能组件 微服务环境搭建案例准备技术选型模块设计微服务调用 创建父工程创建基础模块1、创建 shop-common 模块2、创建实体类 创建用户微服务1、创建pom.xml2、编写主类3、创建配置文件 创建商品微服务1、创建一个名为 shop-product 的模…

圆的参数方程是如何推导的?

圆的参数方程是如何推导的? 1. 圆的三种参数表示2. 三角函数万能公式3. 回到圆的参数方程1. 圆的三种参数表示 已知圆的第一种参数方程为: x 2 + y 2 = r x^2+y^2=r x2+y2=r   圆的图像如下: 通过上图,不难理解,圆的参数方程还可以用三角函数表示,也就是第二种参数表…

mac 下 通过 docker 安装 es

1、安装 docker a、使用 Homebrew 安装 brew install --cask --appdir/Applications docker b、安装包安装 1、安装包下载地址&#xff1a;Install Docker Desktop on Mac | Docker Docs 根据自己的笔记本型号选择&#xff0c;我这边选择的是 intel chip 2、下载安装即可&…

CPMS靶场练习

关键&#xff1a;找到文件上传点&#xff0c;分析对方验证的手段 首先查看前端发现没有任何上传的位置&#xff0c;找到网站的后台&#xff0c;通过弱口令admin 123456可以进入 通过查看网站内容发现只有文章列表可以进行文件上传&#xff1b;有两个图片上传点 图片验证很严格…

pip install yaml安装失败解决方法

pip install yaml 安装失败 解决方法&#xff1a; pip install PyYAML

kotlin $ (字符串模版)的使用

$ 在kotlin 中当做字符串模版使用&#xff0c;作用就是在字符串里面识别自己定义的字符 例如打印一个字符 这个时候编译就提示我们使用字符串模版的是个 $ 的作用就是识别字符串里面的i 字数有点少了&#xff0c;在写一个demo private fun String.appendArchive(): String …

【蓝桥杯冲冲冲】动态规划初步[USACO2006 OPEN] 县集市

蓝桥杯备赛 | 洛谷做题打卡day13 文章目录 蓝桥杯备赛 | 洛谷做题打卡day13题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1 提示样例说明数据规模与约定 思路&#xff1a;方程&#xff1a; 题解代码我的一些话 [USACO2006 OPEN] 县集市 The County Fair 题目描述 每年…

linux中用户及用户组信息

1&#xff0c;linux通过用户名和口令来验证用户的身份。 2&#xff0c;几个用户可以组成一个用户组。 3&#xff0c;useradd工具添加用户&#xff0c;groupadd命令添加用户组。 4&#xff0c;history 命令查看用户在Shell中执行命令的历史记录。 5&#xff0c;userdel命令删…

基于人工蚁群、蚁群、遗传算法的多目标任务分配

matlab2020a可运行 基于人工蚁群、蚁群、遗传算法的多目标任务分配资源-CSDN文库

搜索引擎优化:利用Python爬虫实现排名提升

什么是搜索引擎优化&#xff08;SEO&#xff09; 搜索引擎优化&#xff08;SEO&#xff09;是通过优化网站内容和结构&#xff0c;提高网站在搜索引擎中的排名&#xff0c;从而增加网站流量和曝光度的技术和方法。SEO的目标是使网站在搜索引擎结果页面中获得更高这个过程包括吸…

uniapp h5 生成 ubuntu桌面程序 并运行方法

uniapp h5 生成 ubuntu桌面程序 并运行方法,在window环境下开发&#xff0c;发布到ubuntu桌面&#xff0c;并运行 1、安装Nodejs 安装包官方下载地址&#xff1a;https://www.nodejs.com.cn/ 安装完后cmd&#xff0c;如图&#xff0c;即安装成功 2、通过Nodejs安装 electron…

5. 函数调用过程汇编分析

函数调用约定 __cdecl 调用方式 __stdcall 调用方式 __fastcall 调用方式 函数调用栈帧分析 补充说明 不同的编译器实现不一样&#xff0c;上述情况只是VC6.0的编译实现即便是在同一个编译器&#xff0c;开启优化和关闭优化也不一样即便是同一个编译器同一种模式&#xff0c;3…

74.MySQL 分页原理与优化(下)

文章目录 前言一、一次分页查询的演进二、分页数据在不同页反复出现的坑 前言 上一篇文章介绍了分页原理与优化&#xff1a;73.MySQL 分页原理与优化&#xff08;上&#xff09; 但分页还有一个“坑”需要注意&#xff0c;本文细细道来&#xff0c;可能很多朋友都踩过这个坑还…

第15届蓝桥杯嵌入式省赛准备第二天总结笔记(使用STM32cubeMX创建hal库工程+按键输入)

一.查看电路图 按键是使用的PB0,PB1,PB2,PA0四个引脚&#xff0c;然后使用CubeMX配置引脚&#xff0c;4个脚都配置为输入模式和上拉。 程序生成之后把不用的删掉&#xff0c;需要的留下&#xff0c;这里我把函数名改了。 然后写按键扫描读取程序&#xff0c;这里参考的正点原子…

ArcGIS初始化软件界面Normal.mxt

ArcGIS有时候永久了&#xff0c;或者呢突然不自觉软件界面乱了&#xff0c;或者一些窗口打开却找不到&#xff01; 这时候可以去删除arcgis的界面配置文件&#xff0c;Normal.mxt 删除后再打开软件&#xff0c;软件界面就会回到初始化设置了&#xff01; 文件所在的路径&…

【深度学习】CodeFormer训练过程,如何训练人脸修复模型CodeFormer

文章目录 BasicSR介绍环境数据阶段 I - VQGAN阶段 II - CodeFormer (w0)阶段 III - CodeFormer (w1) 代码地址&#xff1a;https://github.com/sczhou/CodeFormer/releases/tag/v0.1.0 论文的一些简略介绍&#xff1a; https://qq742971636.blog.csdn.net/article/details/134…

Android Studio读写低频RFID T5557卡源码

本示例使用的发卡器&#xff1a;https://item.taobao.com/item.htm?id675212889085&spma1z10.5-c.w4002-21818769070.13.21166f89nKgnJ7 <?xml version"1.0" encoding"utf-8"?> <androidx.constraintlayout.widget.ConstraintLayout xml…