当前位置:   article > 正文

Git高级玩法:Rebase、Cherry-pick与Stash实战解析_git cherry-pick rebase

git cherry-pick rebase

Git高级功能:理解Rebase、Cherry-pick与Stash

软件开发过程中,Git作为版本控制系统,已经成为不可或缺的工具。而Git的高级功能,如Rebase、Cherry-pick与Stash,为开发者提供了更多的灵活性和便利性。本文将详细介绍这三种高级功能,帮助读者理解它们的工作原理及应用场景。

1. Rebase

1.1 概念

Rebase是Git中一个非常强大的功能,它可以将提交历史重新整理,使得某一段历史按照特定的顺序进行提交。简单来说,Rebase就是将现有的提交历史进行“重塑”,以便让某部分提交按照我们期望的顺序进行。

1.2 应用场景

假设你有一个正在开发的feature分支,在这个分支上有多个提交。突然,你的上级告诉你需要先暂停feature的开发,先去修复一个紧急的bug。这时,你可能需要将feature分支上的提交先“保存起来”,等bug修复后再继续开发。这就是Rebase的一个典型应用场景。

1.3 实用技巧与案例

  1. 暂停开发,处理紧急bug
    假设你的feature分支当前提交历史如下:
    A -> B -> C -> D -> E
    
    • 1
    你想要将C和D这两个提交“保存起来”,等修复完bug后再继续开发,可以这样做:
    git checkout feature
    git rebase -i HEAD~3
    
    • 1
    • 2
    打开弹出的编辑器,你会看到类似以下的提示:
    pick C
    pick D
    save E
    
    • 1
    • 2
    • 3
    将E前面的save改为pick,保存并关闭编辑器。这样,C和D会被“保存起来”,等会儿可以重新应用。
    git checkout main
    git pull
    git checkout feature
    git rebase main
    
    • 1
    • 2
    • 3
    • 4
    此时,你的feature分支上的提交历史变为:
    A -> B -> C -> D -> E -> F
    
    • 1
    修复完bug后,你可以继续在F后面开发,然后将C和D重新应用:
    git checkout feature
    git rebase -i HEAD~3
    
    • 1
    • 2
    这次,将E前面的pick改为apply,保存并关闭编辑器。然后:
    git apply C.rebase
    git apply D.rebase
    
    • 1
    • 2
    这样,你的feature分支就回到了暂停开发前的状态:
    A -> B -> C -> D -> E -> F
    
    • 1
  2. 整理提交历史
    有时候,你可能想要重新安排提交顺序,让历史更加清晰。这时,也可以使用Rebase。
    假设你的提交历史如下:
    A -> B -> C -> D -> E
    
    • 1
    你想要将C和D的顺序调换,可以这样做:
    git checkout feature
    git rebase -i HEAD~3
    
    • 1
    • 2
    打开编辑器,你会看到:
    pick C
    pick D
    pick E
    
    • 1
    • 2
    • 3
    将C和D前面的pick改为reword,保存并关闭编辑器。这样,C和D的顺序就会被调换。
    git checkout main
    git pull
    git checkout feature
    git rebase main
    
    • 1
    • 2
    • 3
    • 4
    此时,你的feature分支上的提交历史变为:
    A -> B -> C -> D -> E
    
    • 1

2. Cherry-pick

2.1 概念

Cherry-pick是Git的另一个高级功能,它可以将其他分支上的一个或多个提交“复制”到当前分支。这个功能非常有用,当你想要将其他分支上的某些提交应用到当前分支时。

2.2 应用场景

假设你在feature分支上正在开发一个功能,而在main分支上,你的同事已经修复了一个紧急的bug。你想要将这个bug修复也应用到你的feature分支,可以这样做:

git checkout feature
git cherry-pick main~1
  • 1
  • 2

这样,main分支上最新的提交(即修复bug的提交)就会被复制到feature分支。

如果觉得文章对您有帮助,可以关注同名公众号『随笔闲谈』,获取更多内容。欢迎在评论区留言,我会尽力回复每一条留言。如果您希望持续关注我的文章,请关注我的博客。您的点赞和关注是我持续写作的动力,谢谢您的支持!

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/不正经/article/detail/672948
推荐阅读
相关标签
  

闽ICP备14008679号