本文继续我们的“高级git”系列。在Twitter上关注我们,或订阅我们的新闻通讯以获取有关未来文章的最新信息!
在上一期中,我们探讨了重新审查和合并。尽管巧妙不同,但git merge
和git rebase
都具有相同的基本目的:将一个分支的变化整合到另一个分支。
本文重点介绍了git cherry-pick
,这是一个强大的命令,可以选择将任何分支的个人提交的选择性集成到您当前的头部。这与git merge
和git rebase
形成鲜明对比,后者结合了来自源分支的所有新提交。
为什么选择性地应用单个提交?关键用例是纠正错误。想象一下意外地致力于错误的分支。 cherry-pick
简化了修复程序:切换到正确的分支,然后将错误提交樱桃挑选。
注意:避免过度依赖cherry-pick
。通常优选由git merge
和git rebase
促进的分支级工作流程。 cherry-pick
是特定情况下的宝贵工具,而不是替代标准合并或重新打击的替代品。
考虑到这种情况:针对feature/newsletter
分支机构错误地降落在master
中的一项承诺。以下塔式屏幕截图(用于MacOS和Windows的GIT GUI)说明了这一点,突出显示了将26bf1b48
错误放置在master
中:
另外,命令行揭示了问题:
$ git日志 提交26BF1B4808BA9783E4FABB19EC81E7A4C8160194(负责人 - > Master) 作者:TobiasGünther 日期:周五10月5日09:58:03 2018 0200 新闻通讯注册页
提交26bf1b48
属于feature/newsletter
。让我们用cherry-pick
来移动它:
$ git Checkout功能/新闻通讯 切换到分支“功能/新闻通讯” $ git状态 关于分支功能/新闻通讯 没什么可承诺的,工作树很干净 $ git樱桃袋26BF1B48 [功能/新闻通讯7FB55D0]新闻通讯注册页面 作者:TobiasGünther 日期:周五10月5日09:58:03 2018 0200 1个文件更改,0插入(),0删除( - ) 创建模式100644 Inbimup.html
git log
现在显示feature/newsletter
中的提交:
$ git日志 提交7FB55D06A8E70FDCE46921A8A3D3A9DE7F7FB8D7(头 - >功能/新闻通讯) 作者:TobiasGünther 日期:周五10月5日09:58:03 2018 0200 新闻通讯注册页
注意: cherry-pick
创建了该提交的副本,使原始完整。
“不正确”提交仍然存在于master
中。 git reset
将其删除:
$ git Checkout Master 切换到分支“主” $ git重置 - hard头〜1 Head现在在776F8CA上更改标题和删除错误页面
GUI塔可视化整个过程。
尽可能优先merge
或rebase
。保留cherry-pick
不适合的情况,特别适用于移动个人提交的情况。请记住, git cherry-pick
重复作品;之后始终清理。
探索我免费的“高级GIT套件”,以深入研究GIT工具,包括分支策略,互动式折叠,逆转录子和子模型。
挑剔的樱桃快乐,并在下一个“高级git”期间见到您!
以上是樱桃挑选git的详细内容。更多信息请关注PHP中文网其他相关文章!