git遴选:一行代码恢复被同事误删(覆盖)的代码

代码提交常遇到的问题

在企业项目开发中,git是我们每个程序员提交代码必用的工具。在多人开发同一个项目中的时候,总会出现很多代码提交问题,一个常见的问题就是:我刚提交了代码,结果另一个(混蛋)同事不小心覆盖掉了我的代码进行了提交,导致我的代码突然丢失......

比如前几天,我辛辛苦苦的做了一个功能,我提交了代码【feat:优化hover卡片】

结果B同事在开发时,没有拉取最新代码,解决冲突时也忽略了我的代码就提交了,结果导致云端丢失了我的代码。更惨的是我拉取了代码,导致我本地修改的也没了......同事185,170的体重,体重不足110的我放弃了挣扎。

还好,我发现了git一个牛逼的功能:代码遴选

代码遴选

什么是代码遴选

代码遴选,实际指的是:git cherry-pick

"git cherry-pick" 是 Git 提供的一个命令,用于从一个分支中选择单个提交(或多个提交),并将它们应用到当前分支中。

通俗易懂的来说,就是将git提交历史的某个提交,直接复制在当前分支上!

我们看下代码执行结果就明白了:

看来,学会代码遴选,在也不怕同事误删代码了!

git cherry-pick语法

首先,我们看看git cherry-pick的语法

python 复制代码
git cherry-pick <commit-hash>

这会将指定的提交应用到当前分支中。

你也可以指定多个提交:

python 复制代码
phpCopy code
git cherry-pick <commit-hash-1> <commit-hash-2> ...

除了单个提交的哈希值外,你也可以使用其他引用来指定提交,比如分支名、标签名等。

如何执行

使用vscode命令行直接执行

首先,我们使用git log 找到要遴选的commit-hash编码

然后控制台输入如下命令即可。(一行命令,直接解决问题!)

git cherry-pick 21a8ff5035b1730f8734a806d6a601b0b442f3bb

注:如果出现冲突,按照控制台的提示解决即可。

使用vscode插件Git Graph

Git Graph" 是一个 Git 图形化工具,用于可视化 Git 仓库的分支、提交历史和代码更改。

安装插件

进入插件

选择要遴选的代码

点击确定即可

注:如果出现冲突,按照提示框解决即可

可能遇见的问题说明

由于 cherry-pick 是将提交复制到当前分支上,因此可能会产生冲突,需要手动解决。在vscode和图形化工具中,都有对应的解决提示,我们可以根据提示来进行解决。某些情况下,也可能进入git的vim编辑器,需要填写提交信息。

vim编辑器小技巧

  • 进入编辑模式:进入编辑模式的方式取决于当前编辑器的模式。通常情况下,按下 i 键可以进入插入模式,允许你编辑文本。
  • 编辑文本:在插入模式下,你可以编辑文本。使用方向键或者 h, j, k, l 键移动光标。
  • 退出编辑模式:编辑完成后,按下 Esc 键退出插入模式。
  • 保存并退出:在退出编辑模式后,输入 :wq 并按下 Enter 键,可以保存并退出编辑器。
  • 放弃更改并退出:在退出编辑模式后,输入 :q! 并按下 Enter 键,可以放弃更改并退出编辑器。
相关推荐
油泼辣子多加1 小时前
2024年11月8日Github流行趋势
github
Cachel wood2 小时前
Github配置ssh key原理及操作步骤
运维·开发语言·数据库·windows·postgresql·ssh·github
清源妙木真菌2 小时前
Linux:git的了解和基础使用(保姆级教程)
git
但老师11 小时前
Git遇到“fatal: bad object refs/heads/master - 副本”问题的解决办法
git
秃头女孩y11 小时前
git创建分支
git
研究是为了理解16 小时前
Git Bash 常用命令
git·elasticsearch·bash
DKPT16 小时前
Git 的基本概念和使用方式
git
Winston Wood19 小时前
一文了解git TAG
git·版本控制
喵喵先森20 小时前
Git 的基本概念和使用方式
git·源代码管理
王解20 小时前
Jest项目实战(4):将工具库顺利迁移到GitHub的完整指南
单元测试·github