问题标签 [git-cherry-pick]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1513 浏览

git - 我应该如何使用 git rebase 删除 git cherry-pick 引入的重复提交?

我有点困惑git rebase

我有一个develop分支和一个staging分支。我已经develop融入staging

但是由于樱桃挑选,有一堆重复的提交;我想删除重复项。我应该执行以下操作吗?

更新:这git merge develop是本地的,所以我还没有推送它

0 投票
2 回答
8118 浏览

git - 挑选标签会影响后者吗?

在发布时,我检查了之前发布的标签并挑选了新项目(使用git cherry-pick <commit-id>)放入其中。然后,我使用git tag <tag-name>.

这会影响我挑选更改的旧标签吗?

0 投票
1 回答
13362 浏览

git - 为什么 git 的一次以上提交的樱桃采摘失败?

我尝试合并两个回购,产生一个平坦的(也就是交错的)历史。我按照“历史重写:”下的https://stackoverflow.com/a/14839653/188108的方式执行此操作。

要合并的两个分支在“master”和“src/master”中。然后,我写:

那么,为什么第一个cherry pick 命令失败了,但是split 命令有效呢?我使用 git 1.9.1。

0 投票
1 回答
30 浏览

git - GIT 公共分支清理到新分支

我必须清理一个远程/公共分支“OLD”,因为它包含一些错误/巨大的提交。

OLD - 简化图

为此,我做了:

1)我创建了一个“新”分支。

2) 在第一次大提交之前返回 (c234)

3) Cherry 在最后一个大提交之前挑选所有提交。(c236)

4)然后我在最后一次大提交(c237)之后从“OLD”分支复制了所有更改的文件

5)最后创建了许多反映变化的小提交(c235,c237)

现在新 - 简化图

现在在我看来,我必须将(c237)之后对“OLD”所做的所有更改重新设置为“NEW”顶部

新的预期 - 简化图

我在这个 git-rebase -i 之前尝试过,但因为这是一个公共回购,它包含许多(有近 400 次对 OLD 的 HEAD 的提交)合并,有时我不得不解决冲突 - 女巫可能需要我很多天。

任何想法如何处理它。

0 投票
2 回答
131 浏览

git - 如何在樱桃挑选后删除无主分支中的旧提交?

在主分支中,我有以下提交:

在分支“测试”中,我有:

我做了:

但是,我不想在“测试”分支上提交 B。我怎么能忽略它?这样测试分支最终会像:AC

0 投票
0 回答
225 浏览

git - git cherry-pick 一系列提交以防止历史损坏

问题的简短描述

在一个新的开发人员组加入我们的项目后,他们初始化了一个新的 repo 并将master 的快照复制(未合并!)到新创建的 repo 中。因此,在他们的分支中,旧文件丢失了master. 之后,他们开始了典型的 git 工作流程,包括提交、分支、合并来自 master 的更新等。现在的问题是将他们的代码合并到masterdev排除前两次提交并保留我们的历史记录(并且保留他们的历史记录也很好)。

详细问题描述

所以我们有分支masterdevfunny_developers

这是我们的分支结构:

I...C...X- 是我们的主要开发流程(master现在dev分支已同步)与提交历史。此流没有从funny_developers分支导入

I'- 是一个提交,其中funny_developers重新启动了一个空的新仓库(似乎他们做了git-init?)。

IABC- 非常脏的提交,将提交时funny_developers存在的所有文件复制为新文件。不合并 from ,只是重新创建项目的文件结构!所以他们放弃了在分支演化过程中所做的所有更改历史)。masterCCmaster

G..Z- 是他们进行大量更改的大量提交。在这个流程中,他们还多次合并了来自 master 的更新,创建了自己的分支,将它们合并到funny_developers(有时通过冲突解决)等等。

所以现在我在合并G..Zmaster保留我们最初的提交历史和它们(排除I'IABC提交)时遇到了问题。

问题

您能否建议我最好的方法(如果存在)来获取他们的提交master并保留提交历史记录,不包括前两个?

我一次拯救女王和王国的实验

我试过了git cherry-pick G..Z。但他们在并行分支中进行编码,并且正在将大量合并到funny_developers. 他们解决了很多自己的分支冲突。如果我决定使用这种方法,我似乎需要很多时间来再次解决它们。

我试过git rebase --onto master IABC Z了,期待它能够将所有的分支桶移动G..Zmaster. 但是我遇到了一堆与很久以前的提交相关的冲突(甚至在'funny_developers'开始之前)。而且我无法理解它们与实际 rebase 的关系(可能是因为他们已经重新初始化了 repo ......)。

无论如何,如果我找不到保留“两个历史”的解决方案,我倾向于为他们的所有工作制作差异,并将其作为单个补丁提交提供给master.

0 投票
1 回答
667 浏览

git - Cherry 在 Git 中挑选一系列提交

我希望能得到一些想法。我有三个分支:

  • 掌握
  • 具体的
  • 特征分支

master包含通用代码库,因此如果我想稍后进行分支以创建一种新的实现类型,我可以轻松地做到这一点。但现在specific是我的主要开发分支。

所以我分支specificfeature-branch测试一个新功能,一旦我满意,我就合并feature-branchspecific.

但是有一些提交是特定于实现的specific,我不想合并回master。大多数代码是通用更改,我确实想合并回来。

我将大约 30 个更改feature-branchspecific. 在这 30 个中,大概有 20 个我想从 合并specificmaster.

对我来说最好的方法是什么?

我应该只挑选要合并的每个提交master吗?如果是这样,我是否应该按时间倒序排列(即,获取我想要合并的最旧的提交,然后是第二旧的提交,依此类推 - 樱桃将它们全部重新放入master)。

欢迎任何想法。谢谢

0 投票
0 回答
147 浏览

git - 如何`git cherry-pick`一个系列?

我想挑选一系列提交。这是因为 (1): --ff-only merge 也不是 (2): rebase off each other 也不是 (3): rebase both off a shared branch 和 retrying (1) 在我的特殊情况下工作,因为我的分支是如此广泛分歧和不同。然而,我想要挑选的提交位于代码库中很少触及的部分,因此这里没有合并冲突的风险。我如何不必逐个挑选一大堆提交来节省时间?

0 投票
1 回答
278 浏览

git - 只提交阶段/索引,忽略冲突

我有一个巨大的承诺,我选择了它。选择现在创建了一个冲突总和(在工作树中)。现在我想提交所有分阶段(成功合并)的更改,而不必解决所有冲突。

天真地我一直认为,commit 只会在舞台上起作用,但是当我尝试时,我得到的信息是,如果不解决冲突,我就无法提交。

有人可以向我解释发生了什么以及如何解决它。

0 投票
1 回答
158 浏览

git - 可重复的 git cherry-pick

git cherry-pick不是幂等的,因为在挑选樱桃后提交哈希取决于当前时间和当前用户(作为提交者)。

我想要幂等性,这意味着序列的两倍:

然后再一次:

两次都在 HEAD 处产生完全相同的提交哈希。

有没有办法告诉 git 从原始提交中重用提交者名称和提交者日期?