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 键,可以放弃更改并退出编辑器。
相关推荐
1379003409 小时前
Git 设置代理
git
Web极客码11 小时前
WordPress“更新失败,响应不是有效的JSON响应”问题的修复
json·github·wordpress
xiaodunmeng15 小时前
sourcetree gitee 详细使用
git
是懒羊羊吖~16 小时前
图床 PicGo+GitHub+Typora的下载安装与使用
经验分享·笔记·github·typora·picgo
LostSpeed17 小时前
git,gitea - tool - creat Gitea Empty Rep Dir
git·gitea
前端郭德纲19 小时前
vscode默认终端怎么设置成git bash
git·vscode·bash
近听水无声4771 天前
git 学习(基于Ubuntu和gitee)
git
逛逛GitHub2 天前
刚刚!Open AI 宣布开源?
github
不是伍壹2 天前
【R语言】GitHub Copilot安装-待解决
github·copilot
虾饺爱下棋2 天前
pycharm上传github问题:rejected
人工智能·深度学习·github