问题标签 [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 投票
14 回答
491558 浏览

git - 删除特定提交

我和一个朋友一起做一个项目,他编辑了一堆不应该编辑的文件。不知何故,我将他的作品合并到我的作品中,无论是在我拉出它时,还是在我试图挑选出我想要的特定文件时。我一直在寻找和玩很长时间,试图弄清楚如何删除包含对这些文件的编辑的提交,这似乎是revert和rebase之间的折腾,并且没有直接的例子,并且文档假设我比我知道的更多。

所以这是问题的简化版本:

鉴于以下情况,我如何删除提交 2?

预期的结果是

这是我一直在尝试恢复的示例

0 投票
1 回答
3030 浏览

git - Cherrypicking 与 Rebase

以下是我经常遇到的一个场景:

master您在or上有一组提交design,我想将它们放在production分支之上。

我倾向于创建一个以基础为基础的新分支,在其production上挑选这些提交并将其合并到production

然后,当我合并master到生产时,我面临合并冲突,因为即使更改是相同的,但由于樱桃挑选而被注册为不同的提交。

我找到了一些解决方法来解决这个问题,所有这些都很费力,可以称为“黑客”。

尽管如此,我还没有做太多的变基,我相信这也会创建一个新的提交哈希。

我应该在我挑选的地方使用变基吗?与此相比,它还有什么其他优势。

0 投票
2 回答
2227 浏览

git - 如何在git中的多个分支之间共享单个文件

我有一个存储库,其中包含分支中的软件和分支中master的主页gh-pages。该项目包含一个examples目录,其中包含应包含在master分支中的源文件。主页应包含已编译的示例,可能还包含源文件。如何master在两个分支之间共享示例(取决于要编译的分支)?所需的工作流程是:

分支gh-pages可能已经包含示例,因此只需切换到此分支就会覆盖新编译的文件。编译后的文件不应提交到master分支。我考虑过创建另一个分支examples,但这并没有真正让它变得更容易。如果 git submodule 可以指向特定的分支(可以吗?)我可以创建一个examples在其他分支中用作子模块的分支。将示例移至另一个存储库可能有效,但我更愿意将所有示例保存在一个存储库中。也许有一些合并管理器或樱桃采摘魔法?

0 投票
2 回答
552 浏览

git - 如何一次在 git 中提取一系列提交?

我在一个 fork 中有一系列提交,我想一次向我的 fork 应用或拒绝一个提交。我应该为此使用 git cherry-pick 吗?

0 投票
2 回答
7340 浏览

tfs - 在 TFS 中,如何将变更集挑选到不相关的分支?

我有一个非常混乱的 TFS 结构,我正在尝试清理(感谢我的前任)。我现在有一种情况,我需要有选择地将变更集从一个分支带到另一个没有父/子关系的分支,并且我不希望这些更改通过他们的共享主干。我怎样才能做到这一点?

我尝试了无根据的合并 -在 TFS 中,如何对特定变更集进行无根据的合并?- 这告诉我没有要合并的更改。

我想要实现的是这样的 TFS :可以将搁置集恢复到另一个位置吗?除了变更集。

在 GIT 中,我认为这将是一个简单的选择。

我的结构看起来像:

问题是如何在不通过 X 的情况下将 C2 从 Y 获取到 Z?

0 投票
3 回答
6515 浏览

git - Git 樱桃采摘的合并跟踪?

例如,我有一个dev分支和一个stable分支。

dev以防我从to中挑选了几个提交stable

有什么方法可以让 Git 知道樱桃挑选的提交,并避免双重合并它,如果我以后合并、变基或挑选重叠的范围,从devback 到stable? (这是 SVN 中的基本合并跟踪功能)

0 投票
3 回答
9315 浏览

git - Git:在分支之间移动更改而不更改工作目录

用例:每次我想将提交从一个 git 分支移动到另一个分支时,我都会执行以下一系列操作:

  1. [提交到工作分支]
  2. git checkout 分支合并到
  3. git cherry-pick 目标提交
  4. git push
  5. git checkout 工作分支

唯一的例外情况很好 - 每次我执行 'git checkout' 时,git 工作目录内容都会更改(预期),这会导致我的 IDE(IntelliJ IDEA)执行内部状态更新(因为受监控的文件系统子树在外部被修改)。这真的很烦人,尤其是在大量小提交的情况下。

我看到了两种方法:

  1. 执行“大量挑选”,即执行大量提交;将他们转移到另一个分支机构,例如在工作日结束时;
  2. 有第二个本地 git 存储库并对其执行樱桃选择,即每次实际提交和推送到工作分支时,转到第二个存储库,拉取更改并在那里执行樱桃选择;

我不喜欢第一种方法,因为它可能会忘记移动特定的提交。第二个看起来有点……不自然。

基本上,如果我可以说 git '将这个提交从名为 branchX 的分支移动到分支 branchX+1' 而不更新工作目录,那将是完美的。

问题:是否可以执行上述操作?

0 投票
1 回答
1768 浏览

git - 将相同的文件重命名更改应用于不同的 GIT 分支

我有一个项目,它有一个 master 分支和一个 stable 分支 - 分支很久以前就分道扬镳了。现在我在稳定分支上有几个提交,我也想在主分支上提交(一个错误修复)。我无法合并,因为分支分歧并且有大量未合并的更改 - 我只想要 4 次提交。

所以我尝试了樱桃采摘。但是,由于顶级模块名称从“项目模块”方案更改为“模块”,因此这失败了。挑选樱桃时,GIT 在旧目录中创建新文件(如在旧分支上):未检测到重命名。这可能是因为我收到了这个警告:

我尝试了 git format-patch + git am,但这又在旧目录中创建了文件。

如何将提交应用到主分支?

谢谢,亚当

0 投票
1 回答
1173 浏览

git - git cherry-pick -x:链接详细而不是摘要

给定带有消息“foo”的提交,即只有摘要部分,我会这样做git cherry-pick -x the_commit。结果是带有消息的新提交

现在这样不好,因为它是一个两行摘要,这似乎是 git 中的一个错误。

但是如何在不手动编辑评论的情况下让 git 使评论如下所示?

0 投票
6 回答
15854 浏览

git - git cherry-pick 说存在本地更改,但 git status 什么也没说

更新对不起,我切换到另一个分支,然后再次切换回来,并且无法再重现这个:(