关于gitlab代码回退思路记录

关于gitlab代码回退

场景:当branch_a已经合并到master需要回退使用

写的有点乱,主要是为了理解 cherry pick 和 recert commit 2种方式的区别

一、关于回退

回退简单,直接看别人的操作,传送门

二、关于回退后

如果branch_a内容需要后期合并master,那么还需要干接下来的事

大前提,已经完成了“一”中的回退操作

1. 创建新分支 b_c

2. b_c内容填充

两种填充方式 git cherry pick 和 git revert commit (具体命令自行百度下)

三、2种填充方式相关知识

1. cherry pick效果

git cherry pick 操作(这里只恢复 b_a分支内容,左上角的当前分支为新建的 b_c

假设初始代码量为0,从下往上看,+1+1-1-1+1=1,总结 0+1=1,撤回到最原始再添加内容

新分支 b_c就包含了b_a在合入 master前所有的代码

image-20241226153205575

2. rever commit 效果

git revert commit操作

假设初始代码量为0,从下往上看+1-1-(-1)=1,总结1-1+1=1移除所有的撤回操作

image-20241226160145940

2. 以下为gpt回答

问:git cherry-pick 和 git revert commit 用于代码回退备份

答:

在 Git 中,git cherry-pickgit revert 都是用于管理代码变更的工具,但它们的使用场景和工作方式有所不同。你提到的是 “用于代码回退备份”,在这方面这两个命令的作用也有一些区别。下面我将详细说明它们的区别以及适用于哪些情况。

1. git cherry-pick

git cherry-pick 是用来将特定的提交从一个分支“挑选”出来,并应用到当前分支的一个命令。它并不会撤销某个提交,而是将某个特定提交的修改复制到当前分支。

用法:
  • git cherry-pick <commit-hash>commit-hash 提交的更改复制到当前分支。
  • 适用于从其他分支或历史中挑选并应用某些特定的更改,而不需要合并整个分支。
适用场景:
  • 不合并整个分支: 如果你在一个分支上有一部分修改很有用,但你不想合并整个分支的所有内容,可以用 cherry-pick 来选择性地将某个提交的修改应用到当前分支。
  • 跨分支应用修复: 如果你在 feature-branch 上修复了一个 bug,想把这个修复应用到 master 分支上,而不想合并 feature-branch 的其它变更,git cherry-pick 可以做到这一点。
举例:

假设你有一个 feature-branch,并且它包含多个提交,你只想将其中一个特定提交 abc123 应用到 master 分支上:

# 切换到 master 分支
git checkout master

# 从 feature-branch 中 cherry-pick 提交
git cherry-pick abc123

这个命令会将提交 abc123 中的更改应用到当前的 master 分支,生成一个新的提交。

2. git revert

git revert 是用来撤销(回退)某个 特定提交 的更改,并生成一个新的提交。它不会删除历史记录,而是通过创建一个新的“反向”提交来撤销先前的更改。

用法:
  • git revert <commit-hash> 创建一个新的提交,用于撤销 <commit-hash> 提交中的所有更改。
适用场景:
  • 撤销某个提交的影响: 如果某个提交带来了错误或不希望的更改,可以使用 git revert 来撤销这个提交的更改。
  • 保留历史记录: git revert 不会改变历史,而是通过新提交的方式回退某个更改,适用于公共分支上的撤销操作(特别是在多人协作的项目中)。
  • 回退一个提交而不丢失其它提交: 它不会删除提交,只是生成一个新的提交来反转某个提交的效果。
举例:

假设你在 master 分支上做了一些提交,提交 abc123 引入了一个问题,你可以通过 git revert 来回退它:

# 在 master 分支上回退提交 abc123
git revert abc123

这个命令会生成一个新的提交,内容是撤销 abc123 提交中的所有更改。如果提交 abc123 修改了文件内容,git revert 会将这些修改反过来。

git cherry-pickgit revert 的比较:

命令功能适用场景历史记录
git cherry-pick将指定的提交(或者多个提交)从一个分支复制到当前分支。用于挑选某个提交的更改,应用到当前分支,常用于选择性合并。历史记录不会改变,原提交保留在原分支,复制的提交在目标分支上。
git revert撤销某个指定的提交的更改,并通过生成一个新的提交来反转它。用于撤销某个错误提交,但保留历史记录,适合回滚公共分支的提交。会保留历史记录,撤销操作会产生新的提交,原提交依然存在。

如何使用 git revertgit cherry-pick 来进行代码回退或备份:

  • 回退(撤销某个提交): 如果你需要撤销某个提交的影响,而不改变历史记录,可以使用 git revert。它会生成一个新的提交,用来撤销你指定的提交的更改。

    例如,如果提交 abc123 引入了问题,想要撤销它的更改,你可以执行:

    git revert abc123
    

    这会创建一个新的提交,内容是反向修改(撤销) abc123 提交的所有更改。它不会修改 abc123 的历史记录,只是通过一个新提交来实现回退。

  • 备份: 如果你想将某个提交的更改“备份”到另一个分支或当前分支,可以使用 git cherry-pick。假设某个提交非常重要,你可以将它移植到其他地方,而不需要合并整个分支。

    例如,假设你在 feature-branch 上有一个非常重要的提交 abc123,你想将它应用到 master 分支上,你可以执行:

    git checkout master
    git cherry-pick abc123
    

    这会将 abc123 提交的更改复制到 master 分支上,生成一个新的提交。

总结:

  • git cherry-pick 用于将一个特定的提交从一个分支复制到当前分支,适合用来“备份”或挑选重要的提交。
  • git revert 用于撤销某个提交的修改并生成一个新的提交,适合回退错误的提交,且不会改变历史记录。

根据你的需求,如果你是需要回退某个错误的提交,使用 git revert 更为合适。如果你是想挑选并应用某个特定的提交,使用 git cherry-pick

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值