问题标签 [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 回答
3684 浏览

git - 如何从兄弟目录中 git cherry-pick?

我想使用 git cherry-pick 将一个文件的提交应用到另一个文件而不进行重命名检测(许多类似文件会导致错误检测)。

(主)目录1/文件

(主)目录2/文件

但是我不知道如何告诉cherry-pick对应的目录。

我有另一个案例,它工作得很好git-1.7.5.rc1,现在支持合并策略,又名-Xsubtree=.

(主)目录1/文件

(分支)文件

我打了电话

它工作正常,将更改从 (branch~95) 文件更改为 (master) directory1/file 而不检测重命名。

对于第一种情况,我尝试git cherry-pick使用 -Xsubtree=../directory1但那不起作用。我想我必须以某种方式告诉 git cherry-pick 离开目录 2,然后转到目录 1 应用补丁。

有没有人有这个问题的解决方案?

0 投票
14 回答
331504 浏览

git - 如何 git-cherry-pick 仅更改某些文件?

如果我想将仅对特定提交中更改的某些文件所做的更改合并到 Git 分支中,其中包括对多个文件的更改,如何实现?

假设调用的 Git 提交stuff对文件A, B,进行了更改CD但我只想合并stuff对文件AB. 这听起来像是一项工作,git cherry-pickcherry-pick只知道如何合并整个提交,而不是文件的子集。

0 投票
2 回答
3200 浏览

tfs - TFS 分支和合并策略

我在 TFS 中有一个团队项目,每天都会提交任务。我想独立完成每个任务,然后在测试后将其合并到主线中。

目前有一个 MAIN 分支和一个 DEV 分支,它是 MAIN 的子分支。更改在 DEV 分支中进行,然后在准备好时合并到 MAIN 中。这是通过“cherry-pick”合并完成的。我到处都在读到樱桃选择合并是不好的,你应该尽可能避免它们。

我在 TFS 中的分支和合并方面遇到了麻烦,想知道是否有人对如何在 TFS 中实现这一目标有任何建议,而无需进行樱桃选择合并。

任何帮助表示赞赏。

如果我遗漏了任何关键信息,请发表评论,我将编辑我的帖子。

0 投票
1 回答
301 浏览

git - 将基于主题分支的分支的更改合并到 git 中的不同主题分支

我的团队正在 git 中开发一个共享主题分支,我将其称为“topic1”。我正在对由 topic1 构成的分支上的一些代码进行重构,我将其称为“重构”。我一直在定期将 topic1 合并到重构中,以便我可以及时了解更改,但没有将重构合并回 topic1,因为重构仍在进行中。

还有另一个主题分支,我称之为“topic2”,它是最近从 master 创建的。我想做的只是将我对“重构”所做的更改合并到一个由 topic2 构成的新分支,我将其称为“topic2_refactor”。(即提交中的更改只能通过重构访问,但不能通过 topic1 访问。)

我知道如何看到这些变化:

所以我想做的是这样的——但这种语法不正确:

然后这个:

或这个:

(以上似乎导致了不必要的合并冲突,因为 master 上发生了一些更改,后来又合并回了重构分支。)

我希望有一种干净的方法来做到这一点,并避免不必要的合并冲突,这些冲突后来在“重构”分支的历史中得到解决。这可能使用 git rebase、git filter-branch 等吗?

0 投票
1 回答
185 浏览

git - 将多个提交从一个分支移动到另一个分支?

我从分支大师开始并开发。我基于开发创建了分支 foo。7 次提交之后,现在我意识到我希望我能从 master 中脱颖而出。我可以挑选每个提交,没什么大不了的,但是有没有更巧妙的方法?

0 投票
1 回答
621 浏览

tfs - 批量合并到主后的樱桃采摘变更集

假设我有三个分支:

Dev 中的几个变更集:变更集 1、2 和 3 以及所有三个变更集都会影响某些文件。在某些时候,我将它们全部合并到 Main 并获得变更集 4,其中包括来自所有三个变更集的更改。

如果此时我必须将变更集 2 也合并到 Release 分支中,我该怎么办?如果我尝试从 Main 合并到 Release,我将不得不合并变更集 4,然后手动仅包含对 File 进行的必要编辑。但是在这种情况下,在签入后,TFS 会将整个变更集 4 标记为已合并,并且稍后不会将其提供给合并,尽管事实上不包括变更集 1 和 3 的更改。

我知道我可以通过将 Dev 中的每个变更集分别合并到 Main 中来避免这种情况,但这非常乏味并且似乎不是正确的方法。

我也可以使用 baseless 合并并直接从 Dev 进入 Release,但我认为这是一种极端的措施。

还有其他方法吗?

0 投票
4 回答
176 浏览

git - 为 git repo 的一部分提取 git 历史记录以创建 git 子模块——cherry-pick?

一个类似的问题How to cherry-pick multiple commits假设提交是连续的。

我有一个作为 tarball 下载的模块。我已将它包含在我的主项目的 git 存储库中并对其进行了更改。这些更改散布在主项目的其他提交中。

我已经意识到我的方式的错误,并想用 git 子模块替换模块。我可以添加当前状态,但我想保留我的 git 历史记录。

如何将每个单独的提交移到我的新仓库中?


我想我可以用cherry-pick来做到这一点,但这很耗时。这是我所拥有的:

使用主项目作为远程设置我的新存储库(这样我就可以挑选):

我可以在主项目中看到相关的提交git log ~/.vim/snippets

我可以制作一个脚本来挑选樱桃

但是如果我运行脚本,就会出现合并冲突。在我解决合并和提交后,我需要从我的樱桃挑选脚本中删除成功的位并再次运行它。我想自动执行此操作,例如 git rebase。

0 投票
2 回答
201 浏览

macos - 用于 OS X 的 Mercurial GUI 客户端与樱桃采摘?

这是我在 GitX 中缺少的一项功能。有这样的客户吗?

我所说的挑选是指在提交中只包含某些行的能力。像 crecord,但有一个很好的 GUI。

0 投票
3 回答
223 浏览

git - 记账清理 git 中跨分支的等效更改

我正在尝试清理大量主题分支,主要是为了使mastergithub 中的分支概述不再在非活动主题分支中显示虚假的“n提前”指示器,因为存在相同的更改。

如果没有这些虚假指标,此概览页面将提供一种很好的方式,让您可以一目了然地查看旧主题分支中的任何提交是否被无意中遗漏并且没有合并回master.

在下图中,Y是分支topic中的提交,后来应用于masteras Y'(因此它们具有不同的 sha1 哈希,但补丁 ID 相同)。

git cherry master topic适当地报告:

git merge topic但是,如果我尝试通过发出from来清理它master,我会遇到合并冲突,因为更改E已经master改变了应用补丁的上下文。

有没有办法告诉master“嘿,你真的已经Y有了,所以你可以停止报告你没有。”?(能够以可以自动/以编程方式应用的方式做到这一点是关键。)

0 投票
7 回答
289 浏览

cherry-pick - 如何找出签出文件来自哪个提交

当我签出一个文件时git checkout $commit $filename,我忘记了$commit,但仍然记得$filename,我如何找出是什么$commit