了解gitcherry-pick命令是什么,为什么以及如何使用它。当您与一群程序员一起工作时,无论项目大小如何,处理跨多个Git分支的更改都会变得很困难。有时,您不想将整个Git分支合并到另一个分支中,而是希望选择并移动一些特定的提交。这个过程称为“樱桃挑选”。4本文介绍什么是“选择”,为什么要用,怎么用。让我们开始吧。什么是选择?使用cherry-pick命令,Git允许您将来自任何分支的单个提交合并到当前的GitHEAD分支中。当执行gitmerge或gitrebase时,来自一个分支的所有提交都被合并。cherry-pick命令允许您选择单个提交进行集成。选择的好处以下情况可能会让您更容易理解选择功能。想象一下,您正在为即将到来的每周冲刺实现新功能。当您的代码准备就绪后,您将把它推送到远程分支,准备好进行测试。但是,客户对所有修改都不满意,并要求您仅提供某些修改。因为客户端还没有批准下一个版本的所有更改,所以gitrebase不会有预期的结果。为什么?因为gitrebase或gitmerge将合并上一个sprint的所有调整。选择就是答案!因为它只关注提交中添加的更改,所以剔除只会带来已批准的更改,而不是其他提交。使用分类还有其他几个原因:它对于错误修复至关重要,因为错误出现在开发分支中的相应提交中。您可以通过使用gitcherry-pick而不是其他选项(例如gitdiff)来应用特定更改,从而避免不必要的工作。如果由于来自不同Git分支的版本不兼容而无法加入整个分支,它是一个有用的工具。使用cherry-pick命令在cherry-pick命令的最简单形式中,您只需使用要合并到当前HEAD分支中的提交的SHA标识符。要获取提交哈希,可以使用gitlog命令:$gitlog--oneline一旦知道提交哈希,就可以使用cherry-pick命令。语法是:$gitcherry-pick例如:$gitcherry-pick65be1e5这会将指定的更改合并到当前签出的分支中。如果您想进行进一步的更改,您还可以要求Git将已提交的更改添加到您的工作副本中。语法是:$gitcherry-pick--no-commit例如:$gitcherry-pick65be1e5--no-commit如果你想同时选择多个提交,请将它们的提交哈希分开spaces打开:$gitcherry-pickhash1hash3在pickingcommits的时候,不能使用gitpull命令,因为它可以从一个仓库中取出commit,并自动合并到另一个仓库中。cherry-pick是一个专门不这样做的工具;另一方面,您可以使用gitfetch,它获取提交但不应用它们。毫无疑问gitpull很方便,但它不够精确。亲自尝试要尝试这个过程,启动一个终端并生成一个示例项目:$mkdirfruit.git$cdfruit.git$gitinit。创建一些数据并提交:$echo"Kiwifruit">fruit.txt$gitaddfruit.txt$gitcommit-m'Firstcommit'现在通过创建项目的分支代表远程开发人员:$mkdir~/fruit.fork$cd!$$echo"Strawberry">>fruit.txt$gitaddfruit.txt$gitcommit-m'Addedafruit"这是一个有效的提交。现在,创建一个错误的提交,代表你不想合并到你的项目中的东西:$echo"Rhubarb">>fruit.txt$gitaddfruit.txt$gitcommit-m'添加了一种尝起来像水果的蔬菜"返回到您的存储库并从您假设的开发人员那里获取提交:$cd~/fruit.git$gitremoteadddev~/fruit.fork$gitfetchdevremote:Countingobjects:6,done.remote:Compressingobjects:100%(2/2),done.remote:Total6(delta0),reused0(delta0)Unpackingobjects:100%(6/6),done...$gitlog–onelinedev/mastere858ab2添加了一个蔬菜tasteslikeafruit0664292Addedafruitb56e0f8Firstcommit你已经从你想象中的开发者那里得到了提交,但你还没有将它们合并到你的存储库中。你想接受第二次提交,但不想接受第三次提交,所以使用cherry-pick.$gitcherry-pick0664292第二个提交现在在你的存储库中:$catfruit.txtKiwifruitStrawberry将你的更改推送到远程服务器,就是这样!原因避免triting在开发者社区中,通常不鼓励triting。主要原因是它会创建重复提交,并且您无法跟踪您的提交历史记录。如果您不按顺序选择记录在您的分支中的大量提交,可能会导致Git分支中出现不良结果。采摘是一个强大的命令,它可以导致问题。当您搞砸并提交到错误的分支时,它可能会挽救您的生命(至少是您当天的工作)。