目录搜索
GuidesgitattributesgiteverydaygitglossarygitignoregitmodulesgitrevisionsgittutorialgitworkflowsAdministrationgit archivegit bundlegit cleangit filter-branchgit fsckgit gcgit instawebgit reflogBasic Snapshottinggit addgit commitgit diffgit mvgit resetgit rmgit statusBranching and Merginggit branchgit checkoutgit loggit mergegit mergetoolgit stashgit tagDebugginggit bisectgit blamegit grepEmailgit amgit format-patchgit request-pullgit send-emailExternal Systemsgit fast-importgit svnGetting and Creating Projectsgit clonegit initGitgit annotategit archimportgit bisect-lk2009git check-attrgit check-mailmapgit check-ref-formatgit checkout-indexgit cherrygit citoolgit columngit credentialgit credential-cachegit credential-storegit cvsexportcommitgit cvsimportgit cvsservergit diff-filesgit diff-treegit difftoolgit fast-exportgit fetch-packgit fmt-merge-msggit get-tar-commit-idgit guigit http-backendgit http-fetchgit http-pushgit imap-sendgit index-packgit interpret-trailersgit ls-remotegit ls-treegit mailinfogit mailsplitgit merge-filegit merge-indexgit merge-one-filegit merge-treegit mktaggit mktreegit name-revgit notesgit p4git pack-objectsgit pack-redundantgit pack-refsgit parse-remotegit patch-idgit prunegit prune-packedgit quiltimportgit receive-packgit remote-extgit remote-fdgit remote-testgitgit repackgit replacegit rereregit send-packgit sh-i18ngit sh-setupgit shellgit show-branchgit show-indexgit stripspacegit unpack-filegit unpack-objectsgit upload-archivegit upload-packgit vargit verify-commitgit verify-taggit whatchangedgit worktreeInspection and Comparisongit describegit shortloggit showMiscellaneousapi credentialsapi indexgitcligitcore tutorialgitcredentialsgitcvs migrationgitdiffcoregithooksgitkgitnamespacesgitremote helpersgitrepository layoutgitsubmodulesgittutorial 2gitwebgitweb.confpack formatUser ManualPatchinggit applygit cherry-pickgit rebasegit revertPlumbing Commandsgit cat-filegit check-ignoregit commit-treegit count-objectsgit diff-indexgit for-each-refgit hash-objectgit ls-filesgit merge-basegit read-treegit rev-listgit rev-parsegit show-refgit symbolic-refgit update-indexgit update-refgit verify-packgit write-treeServer Admingit daemongit update-server-infoSetup and Configgitgit configgit helpSharing and Updating Projectsgit fetchgit pullgit pushgit remotegit submodule
文字

名称

git-cherry  - 查找尚未应用于上游的提交

概要

git cherry [-v] [<upstream> [<head> [<limit>]]]

描述

确定在<head>..<upstream>那里的提交是否有与<limit>..<head>范围内的提交相同。

删除空格和行号后,基于 diff 等同性测试。因此, git-cherry 可以检测提交何时通过 git-cherry-pick [1],git-am [1]或git-rebase [1] 被“复制”。

<limit>..<head>输出每个提交的 SHA1 ,前缀-为<upstream>(<上游>)中的等价提交,以及不提交+的提交。

选项

-v

显示 SHA1 旁边的提交主题。

<upstream>

上游分支来搜索等效提交。默认为 HEAD 的上游分支。

<head>

工作分部;默认为 HEAD。

<limit>

不要报告提交到(包括)限制。

示例

补丁工作流程

git-cherry 经常用于基于补丁的工作流程(请参阅gitworkflows [7])以确定上游维护人员是否应用了一系列补丁。在这样的工作流程中,您可以创建并发送如下主题分支:

$ git checkout -b topic origin/master
# work and create some commits
$ git format-patch origin/master
$ git send-email ... 00*

稍后,您可以通过说(仍在topic)来查看您的更改是否已应用:

$ git fetch  # update your notion of origin/master
$ git cherry -v

具体的例子

在主题由三个提交组成的情况下,维护者应用其中两个提交时,情况可能如下所示:

$ git log --graph --oneline --decorate --boundary origin/master...topic* 7654321 (origin/master) upstream tip commit[... snip some other commits ...]* cccc111 cherry-pick of C* aaaa111 cherry-pick of A[... snip a lot more that has happened ...]| * cccc000 (topic) commit C| * bbbb000 commit B| * aaaa000 commit A|/o 1234567 branch point

在这种情况下,git-cherry 会显示一个尚未应用的简要摘要:

$ git cherry origin/master topic- cccc000... commit C+ bbbb000... commit B- aaaa000... commit A

在这里,我们看到提交 A 和 C(标记为-)可以从您的topic分支中删除,当您重新绑定它origin/master时,提交 B(标记为+)仍然需要保留,以便它将被发送以应用到origin/master

使用限制

如果您的主题基于其他不在上游的工作,则可选<limit>非常有用。在前面的例子中展开,这可能看起来像:

$ git log --graph --oneline --decorate --boundary origin/master...topic* 7654321 (origin/master) upstream tip commit[... snip some other commits ...]* cccc111 cherry-pick of C* aaaa111 cherry-pick of A[... snip a lot more that has happened ...]| * cccc000 (topic) commit C| * bbbb000 commit B| * aaaa000 commit A| * 0000fff (base) unpublished stuff F[... snip ...]| * 0000aaa unpublished stuff A|/o 1234567 merge-base between upstream and topic

通过指定base限制,您可以避免列出basetopic之间的提交:

$ git cherry origin/master topic base- cccc000... commit C+ bbbb000... commit B- aaaa000... commit A
上一篇:下一篇: