Rah*_*hul 2117 git cherry-pick git-cherry-pick
最近,我被要求cherry-pick提交.
那么,在git中挑选一个提交意味着什么呢?你怎么做呢?
Phi*_*rie 2568
在Git中挑选Cherry意味着从一个分支中选择一个提交并将其应用到另一个分支.
这与其他方式如对比度merge和rebase通常应用于许多提交到另一个分支.
确保您在要应用提交的分支上.
git checkout master
Run Code Online (Sandbox Code Playgroud)执行以下操作:
git cherry-pick <commit-hash>
Run Code Online (Sandbox Code Playgroud)注意:
如果你从公共分支机构挑选,你应该考虑使用
git cherry-pick -x <commit-hash>
Run Code Online (Sandbox Code Playgroud)
这将生成标准化的提交消息.这样,您(和您的同事)仍然可以跟踪提交的来源,并可能避免将来发生合并冲突.
如果您在提交中附有说明,则不遵循樱桃选择.为了把它们带过来,你必须使用:
git notes copy <from> <to>
Run Code Online (Sandbox Code Playgroud)其他链接:
Teo*_*ahi 287
这句话取自; 使用Git进行版本控制 (非常棒的书,如果您对git感兴趣,我鼓励您购买它)
编辑:由于这个答案仍然有印象,我想添加非常好的动作视频教程:
使用git cherry-pick命令git cherry-pick commit应用当前分支上的命名提交引入的更改.它将引入一个新的,独特的提交.严格来说,使用git cherry-pick不会改变存储库中的现有历史记录; 相反,它增加了历史.与通过应用diff的过程引入更改的其他Git操作一样,您可能需要解决冲突以完全应用来自给定提交的更改.命令git cherry-pick通常用于将特定提交从存储库中的一个分支引入到不同的分支上.常见的用途是从维护分支到开发分支的转发或后端提交.
$ git checkout rel_2.3
$ git cherry-pick dev~2 # commit F, above
Run Code Online (Sandbox Code Playgroud)
之前:

后:

Tad*_*eck 153
Git中的Cherry挑选旨在将一个分支从一个分支应用到另一个分支.如果你这样做可以做到.犯了一个错误,并将更改提交到错误的分支,但不想合并整个分支.你可以这样.恢复提交并在另一个分支上挑选它.
要使用它,您只需要git cherry-pick hash,hash其他分支的提交哈希.
有关完整程序,请参阅:http://technosophos.com/2009/12/04/git-cherry-picking-move-small-code-patches-across-branches.html
Dan*_*ník 82
情况的简短例子,当你需要樱桃挑选
考虑以下场景.你有两个分支.
a)release1 - 这个分支将交给您的客户,但仍有一些问题需要修复.
b)master - 经典主分支,您可以在其中添加release2的功能.
现在:你在release1中修复了一些东西.当然你也需要在master中修复此问题.这是樱桃采摘的典型用例.因此,在这种情况下,挑选意味着您从release1分支进行提交并将其包含在主分支中.
小智 50
cherry-pick是一个Git功能.如果有人想在一个分支中将特定提交提交到目标分支,则使用cherry-pick.
git cherry-pick步骤如下.
git cherry-pick <commit id>
Run Code Online (Sandbox Code Playgroud)
这里commit id是另一个branch.Eg的活动id.
git cherry-pick 9772dd546a3609b06f84b680340fb84c5463264f
Run Code Online (Sandbox Code Playgroud)访问https://git-scm.com/docs/git-cherry-pick
小智 21
你可以想一下,如果一个樱桃选择与一个rebase类似,或者它的管理就像一个rebase.通过这个,我的意思是它需要一个现有的提交并重新生成它,作为起点,你当前所在分支的负责人.
A rebase接受具有父X的提交并重新生成提交,就好像它实际上具有父Y一样,这正是它的cherry-pick作用.
Cherry pick更多地是关于如何选择提交.使用pull(rebase),git会隐式重新生成你的本地提交,而cherry-pick不是在你的分支的基础上,但你明确地选择一些提交,并在你当前的分支上隐式重新生成它们(它们).
所以你这样做的方式不同,但在幕后他们是非常相似的操作 - 提交的再生.
man*_*elf 17
它将对您当前的分支应用特定的提交。
这意味着 :
例如:考虑提交 A
added newFileA
modified main:
+ import './newFileA'
Run Code Online (Sandbox Code Playgroud)
提交 B
added newFileB
modified main:
+ import './newFileB'
Run Code Online (Sandbox Code Playgroud)
如果你在另一个分支上选择提交 B,你最终会得到:
/newFileB
/main :
import './newFileA'
import './newFileB'
Run Code Online (Sandbox Code Playgroud)
由于提交 B包含newFileB和main,但没有newFileA,导致错误,因此请谨慎使用。
Mar*_*anD 12
我准备了分步演示的插图,摘樱桃也做了这些动画的插图(接近尾声)。
注意:
提交L'是从用户的角度来看(commit = snapshot)的确切副本L。
从技术上讲(内部),这是一个新的不同的提交(因为例如L包含的指针K,而L'包含的指针E)。
小智 10
它有点像Copy(从某个地方)和Paste(到某个地方),但是对于特定的提交.
例如,如果要进行热修复,则可以使用该cherry-pick功能.
做你cherry-pick在开发分支,merge即承诺一个发布分支.同样,cherry-pick从发布分支到master.瞧
Wol*_*ack 10
当您与项目团队的开发人员一起工作时,管理多个git分支之间的更改可能会成为一项复杂的任务。有时,您不想将整个分支合并到另一个分支中,只需要选择一个或两个特定的提交即可。此过程称为“樱桃采摘”。
找到了一篇有关采摘樱桃的好文章,请查看其详细信息:https : //www.previousnext.com.au/blog/intro-cherry-picking-git
如果要合并而没有提交ID,则可以使用此命令
git cherry-pick master~2 master~0
Run Code Online (Sandbox Code Playgroud)
上面的命令将从1到3合并master的最后三个提交
如果要对单个提交执行此操作,只需删除最后一个选项
git cherry-pick master~2
Run Code Online (Sandbox Code Playgroud)
这样,您将合并master末尾的第3次提交。
| 归档时间: |
|
| 查看次数: |
1006366 次 |
| 最近记录: |