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 键,可以放弃更改并退出编辑器。
相关推荐
让生命变得有价值2 小时前
使用 helm 部署 gitlab
gitlab·helm
Kkooe2 小时前
GitLab|GitLab报错:PG::ConnectionBad: could not connect to server...
gitlab
Smile丶凉轩7 小时前
微服务即时通讯系统的实现(服务端)----(1)
c++·git·微服务·github
pumpkin845149 小时前
GitHub 和 GitLab
gitlab·github
lizz6669 小时前
gitlab:使用脚本批量下载项目,实现全项目检索
gitlab
脸ル粉嘟嘟9 小时前
GitLab使用操作v1.0
学习·gitlab
会讲英语的码农11 小时前
Git项目管理
gitee·github
油泼辣子多加12 小时前
2024年11月21日Github流行趋势
github
A洛13 小时前
Vercel 设置自动部署 GitHub 项目
github·webhooks·自动部署·vercel