工作中git常用操作

news2024/11/15 15:28:02

前言

在各种版本并行,需求不断迭代的过程中,我们经常会遇到各种打断开发的场景:

场景一:当前版本功能开发到一半,上级临时要求去修复某个线上bug?你能说不吗, 那当然绝对服从组织安排 😄

场景二:已经提交且合并主分支的功能版本,产品经理不要了,或则更有甚者只要求留部分功能。你又能说不吗?🐶

场景三: 不小心把开发到一半的commit,也一并提交上去了。如何优雅退回?

还有其他各种奇葩场景,欢迎大家评论区留言讨论 👏

那么应对错综复杂的版本迭代,分支串行,如何把git用得更加得心应手呢,以下内容快速入门git,根据不同的场景,在工作中快速对照使用,希望能够帮大家提升工(hua)作(shui)效(shi)率(jian) 💪

1. git clone xxx仓库地址

场景:克隆一个项目,开始搬砖 🧱

2. git 提交三步曲

git add .
git commit -m'fixbug:解决某某bug'
git push

场景:开发完毕功能后,提交更改的代码。

使用:开发完毕功能后,提交更改的代码。

当知道一些git命名后,想了解很多api含义或者参数用法,只需要如下:

git add --help
git commit --help
场景:查看某个git 命令的更多信息。
示例:git commit --help

image.png

3.git status

场景:随时随地查看当前工作区的状态,例如git add 什么文件,git commit 什么文件等等

示例:

image.png

4.git log 主机名/分支名git reflog 主机名/分支名

场景:查看仓库提交的记录

使用:

4.1git log查看当前分支的log记录,不用切换分支查看其他分支的log,可以使用git log 主机名/分支名

4.2 git reflog可以查看所有分支的所有操作记录(包括已经被删除的 commit 记录和 reset 的操作)

例如: 下文👇提到的reset命令,执行git reset --hard HEAD~1,退回到上一个commitid,用git log看不到被删除的commitid,用git reflog 可看到被删除的commitid,恢复到被删除的那个commitid

5.git remote -v

git remote add origin <git@github.com>:xxx/xxgit ,添加主机名为origin的远程仓库target

git remote add fork <git@github.com>:xxx/xxgit

git remote rm origin 移除主机名为origin的远程仓库target

场景:从origin分支,fork下来一个自己分支,添加一些修改后,想push回到origin分支

使用:查看远程 fetch/push 对应的分支

image.png

6.git reset --soft HEAD~git reset --hard HEAD~

场景:不小心commit了不想提交的更改,想撤回来

使用:可撤销最近一次commit到本地仓库的提交,所有撤销的代码修改进入暂存区(更改的代码还在)。

命令详解:

HEAD~ 表示最近一次的commit,也可以写成HEAD~1,想要撤回最近N次的commit,对应 HEAD~N

--soft 不删除工作空间的改动代码 ,撤销commit,不撤销git add xxx

--hard 删除工作空间的改动代码,撤销commit且撤销 git add xxx

7.git stash

场景:在功能分支a进行功能开发,代码也写了一半。这时候需要切换到另外的分支临时修复一个bug。不想commit,不想丢失当前修改。

使用:可把当前的工作内容,stash起来,还原本分支工作区。git statsh list 可以查看stash的记录。是一个队列,git stash pop 可以应用最近一个statsh 而且删除记录。

stash
vt.藏匿; 隐藏; 存放; 贮藏;
中英对照例句They had all that money stashed away in the loft
他们把那笔钱全都藏匿在阁楼上了。

8.git commit --amend

amend英[əˈmend] 美[əˈmend][]
vt.修正; 修订(法律文件、声明等);
中英对照例句The Problems in City Tourism Image and the System to Amend
城市旅游形象问题及系统修正研究

场景:如果commit注释写错了,只是想改一下注释。

使用:输入命令后,会进入vim编辑器,修改完成你要的注释后保存即可。其中,vim 的命令,按键 i 进入编辑页面,修改好后,按键 :wq 保存并退出。

9. git cherry-pick <commitHash>

场景:如果想把A分支合并到B分支,git merge 分支名 就可以把全部的commit合并过来。但有时候只想合并A分支个别commit 修改

使用:git log 主机名(远程一般为origin)/master 查看commitid, git cherry-pick <commitid1> <commitid2>上面的命令将 commitid1 和 commitid2 两个提交应用到当前分支。会在当前分支生成两个对应的新commit.之后检查无误后,可以push。有时候会冲突,可以解决后在push。

10. 创建分支,切换分支,删除分支

先用git checkout --help 查看下文档。

image.png

10.1 创建分支

其中比较常用到的,拉取远程分支,并创建本地分支,checkout操作:

git checkout -b 本地分支名 远程分支名如

使用: git checkout -b dev origin/dev 基于远程dev,创建本地分支名dev,然后 git branch -a
查看所有的分支

10.2 切换后删除分支

场景:想要删除本地分支A或则远程分支A

使用:当前本地分支为A,想要删除本地分支A。git checkout 分支B 切换到分支B,删除本地分支: git branch -d 分支A , 如果删除不了想强制删除,git branch -D 分支A, 而删除远程分支的话,使用git push origin :远程分支A 相当于 git push origin --delete 远程分支A

参考文章:

https://git-scm.com/

https://www.ruanyifeng.com/blog/2020/04/git-cherry-pick.html

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

代码随想录算法训练营day54 | 动态规划之子序列 392.判断子序列 115.不同的子序列

day54392.判断子序列1.确定dp数组&#xff08;dp table&#xff09;以及下标的含义2.确定递推公式3.dp数组如何初始化4.确定遍历顺序5.举例推导dp数组115.不同的子序列1.确定dp数组&#xff08;dp table&#xff09;以及下标的含义2.确定递推公式3.dp数组如何初始化4.确定遍历顺…

[2.2.3]进程管理——调度算法的评价指标

文章目录第二章 进程管理调度算法的评价指标&#xff08;一&#xff09;CPU利用率&#xff08;二&#xff09;系统吞吐量&#xff08;三&#xff09;周转时间&#xff08;四&#xff09;等待时间&#xff08;五&#xff09;响应时间小结第二章 进程管理 调度算法的评价指标 CP…

861. 翻转矩阵后的得分

861. 翻转矩阵后的得分https://leetcode.cn/problems/score-after-flipping-matrix/ 难度中等236 给你一个大小为 m x n 的二元矩阵 grid &#xff0c;矩阵中每个元素的值为 0 或 1 。 一次 移动 是指选择任一行或列&#xff0c;并转换该行或列中的每一个值&#xff1a;将所…

【Flutter】开发环境配置:FlutterSDK、Android SDK、iOS SDK

文章目录 一、前言二、Dart和Flutter的关系三、本地开发环境配置1.FlutterSDK2.配置镜像站3.安装安卓工具链4.安装XCode5.Dart 配置四、配置完成五、总结一、前言 在前面的课程中,我们学习了Dart语言的基本用法,并在DartPad线上环境对代码执行。 接下来,我们学习如何在本地…

如何为Keil安装version 5版本的ARM Compiler(Use default compliler version 5)

目录1. 为什么要安装version 5编译器2. 从原来MDK5.37以下版本(MDK536)的软件中提取AC5的编译器3. 解压完成后的文件如下图&#xff0c;打开ARM文件夹4. 将AMRCC文件夹拷贝到你的keil安装目录的AMR文件下5. 打开Keil&#xff0c;点击Project→Manage→Project Items&#xff0c…

爬虫(一)基础介绍

文章目录1. 爬虫简介1.1 robots协议1.2 反爬手段1.3 请求组成1.4 响应组成1.5 POST 请求与 GET 请求2. requests库2.1 GET请求2.2 POST请求2.3 代理1. 爬虫简介 网络爬虫也叫做网络机器人&#xff0c;可以代替人们自动地在互联网中进行数据信息的采集与整理。它是一种按照一定的…

哪种类型蓝牙耳机佩戴最舒服?舒适度最好的蓝牙耳机推荐

如果您想在外出时听自己喜欢的音乐&#xff0c;您需要佩戴耳机&#xff0c;当前的耳机都足够小&#xff0c;可以将它们放在口袋里&#xff0c;即使它们在充电盒中也是如此&#xff0c;舒适度一直都是人们所追求的&#xff0c;舒适之余&#xff0c;佩戴同样稳固更加令人安心&…

ASEMI高压MOS管7N65参数,7N65图片,7N65大小

编辑-Z ASEMI高压MOS管7N65参数&#xff1a; 型号&#xff1a;7N65 漏极-源极电压&#xff08;VDS&#xff09;&#xff1a;650V 栅源电压&#xff08;VGS&#xff09;&#xff1a;30V 漏极电流&#xff08;ID&#xff09;&#xff1a;7A 功耗&#xff08;PD&#xff09;…

中文数字对照表--课后程序(Python程序开发案例教程-黑马程序员编著-第4章-课后作业)

实例5&#xff1a;中文数字对照表 阿拉伯数字因其具有简单易写、方便使用的特点成为了最流行的数字书写方式&#xff0c;但在使用阿拉伯数字计数时&#xff0c;可以对某些数字不漏痕迹的修改成其它数字&#xff0c;例如&#xff0c;将数字“1”修改为数字“7”&#xff0c;将数…

Excel·VBA矩阵、求逆矩阵、解线性方程组

初等变换法求逆矩阵 vba内置函数MInverse可以计算矩阵的逆矩阵&#xff0c;《Office VBA 参考-WorksheetFunction.MInverse 方法 (Excel)》 初等变换法代码思路 对于一个3x3矩阵&#xff08;下图3x3红色部分&#xff09;右侧扩充单位矩阵&#xff08;下图3x3黑色部分&#xf…

海格里斯HEGERLS料箱穿梭车生产厂家|配有高速货物提升机滚筒输送线设备的料箱四向穿梭车立体库

随着物流自动化需求的增中和自动化料箱数量的增加&#xff0c;现在市场对料箱四向穿梭车系统的需求正在逐渐增加&#xff0c;这也使得四向穿梭车在储物效率和储物空间利用率方面的优势的更加突出&#xff0c;其应用场景也在不断扩大。料箱四向穿梭车仓储方案已成为一种高效、智…

svg的深度利用绕过waf

目录 DOM树的构建 源码 img失败的原因 解法一 --- svg成功的原因 触发流程 实验 解法二 --- details标签 事件触发流程 实验验证 总结 首先在解这道题的开始连了解下什么是DOM树&#xff0c;以及DOM树的构建 DOM树的构建 我们知道JS是通过DOM接口来操作文档的&…

针对博客系统的自动化测试

针对博客系统进行web自动化测试 文章目录针对博客系统进行web自动化测试引入依赖创建出合适的目录结构AutoTestUtilsBlogLoginTestBlogListTestBLogEditTestBlogDetailTest使用套件执行关于博客系统的自动化测试的源代码已经上传至gitee链接 引入依赖 首先在pom.xml上导入依赖…

【错误记录】映射文件发生改变

遇到映射文件发生改变在项目中有的地方是使用反射机制进行的操作&#xff0c;可能对于类进行了某些更改&#xff0c;科室映射文件没有更改&#xff0c;采用匿名就会出现这样的问题&#xff0c;解决办法要么更改映射文件&#xff0c;要不不要使用匿名调用。JavaDocs路径报红Clas…

ruoyi-vue-plus学习2(异步日志)(@EventListener)(@Async)(线程池池相关)

ruoyi-vue-plus的日志打印是通过监听器实现的&#xff0c;和原版若依稍稍不同 找到登录时记录日志的方法 该方法如下 这里的参数LogininforEvent为消息类&#xff0c;注意&#xff0c;貌似高版本的spring定义消息类不需要继承ApplicationEvent类也行。直接使用普通实体类就行…

详解-序列化和反序列化

文章目录问题使用场景序列化协议TCP/IP 4 层模型的哪一层&#xff1f;序列化协议问题 什么是序列化和反序列化? Java对象保存在文件中/网络传输Java对象&#xff0c;这些场景需要用到序列化。 序列化&#xff1a;将Java对象或数据结构转化成二进制流反序列化&#xff1a;将二…

Git简单使用

Git简单使用 git初始化操作 pwd&#xff1a;显示当前目录 git init&#xff1a;把这个目录变成git可以管理的仓库 git clone&#xff1a; 从现有 Git 仓库中拷贝项目&#xff08;类似 svn checkout&#xff09;。 克隆仓库的命令格式为&#xff1a; git clone <repo&g…

【Java基础 下】 031 -- 反射 动态代理

一、什么是反射&#xff1f; 换句话说就是&#xff08;从类里拿出来&#xff09; 可以获取到&#xff1a;&#xff08;利用反射&#xff0c;我们可以获取到类中所有的东西&#xff09; 获取是先从class字节码文件中获取的 二、获取class对象的三种方式 三种方式也对应了三种阶段…

Unity之Addressable使用注意事项

基本设置 Profile文件中配置资源构建路径和资源首次加载路径&#xff0c;资源如何设置了缓存&#xff0c;在首次加载之后会将再用缓存在缓存目录&#xff0c;后面将直接从缓存目录中读取&#xff0c;RemoteLoadPath一般要设置成可以动态修改类型的参数&#xff0c;方便项目发包…

[oeasy]python0104_指示灯_显示_LED_辉光管_霓虹灯

编码进化 回忆上次内容 x86、arm、riscv等基础架构 都是二进制的包括各种数据、指令 但是我们接触到的东西 都是屏幕显示出来的字符 计算机 显示出来的 一个个具体的字型 计算机中用来展示的字型 究竟是 如何进化的 呢&#xff1f;&#x1f914;&#x1f914; 模拟电路时…