问题标签 [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.
git - 删除特定提交
我和一个朋友一起做一个项目,他编辑了一堆不应该编辑的文件。不知何故,我将他的作品合并到我的作品中,无论是在我拉出它时,还是在我试图挑选出我想要的特定文件时。我一直在寻找和玩很长时间,试图弄清楚如何删除包含对这些文件的编辑的提交,这似乎是revert和rebase之间的折腾,并且没有直接的例子,并且文档假设我比我知道的更多。
所以这是问题的简化版本:
鉴于以下情况,我如何删除提交 2?
预期的结果是
这是我一直在尝试恢复的示例
git - Cherrypicking 与 Rebase
以下是我经常遇到的一个场景:
master
您在or上有一组提交design
,我想将它们放在production
分支之上。
我倾向于创建一个以基础为基础的新分支,在其production
上挑选这些提交并将其合并到production
然后,当我合并master
到生产时,我面临合并冲突,因为即使更改是相同的,但由于樱桃挑选而被注册为不同的提交。
我找到了一些解决方法来解决这个问题,所有这些都很费力,可以称为“黑客”。
尽管如此,我还没有做太多的变基,我相信这也会创建一个新的提交哈希。
我应该在我挑选的地方使用变基吗?与此相比,它还有什么其他优势。
git - 如何在git中的多个分支之间共享单个文件
我有一个存储库,其中包含分支中的软件和分支中master
的主页gh-pages
。该项目包含一个examples
目录,其中包含应包含在master
分支中的源文件。主页应包含已编译的示例,可能还包含源文件。如何master
在两个分支之间共享示例(取决于要编译的分支)?所需的工作流程是:
分支gh-pages
可能已经包含示例,因此只需切换到此分支就会覆盖新编译的文件。编译后的文件不应提交到master
分支。我考虑过创建另一个分支examples
,但这并没有真正让它变得更容易。如果 git submodule 可以指向特定的分支(可以吗?)我可以创建一个examples
在其他分支中用作子模块的分支。将示例移至另一个存储库可能有效,但我更愿意将所有示例保存在一个存储库中。也许有一些合并管理器或樱桃采摘魔法?
git - 如何一次在 git 中提取一系列提交?
我在一个 fork 中有一系列提交,我想一次向我的 fork 应用或拒绝一个提交。我应该为此使用 git cherry-pick 吗?
tfs - 在 TFS 中,如何将变更集挑选到不相关的分支?
我有一个非常混乱的 TFS 结构,我正在尝试清理(感谢我的前任)。我现在有一种情况,我需要有选择地将变更集从一个分支带到另一个没有父/子关系的分支,并且我不希望这些更改通过他们的共享主干。我怎样才能做到这一点?
我尝试了无根据的合并 -在 TFS 中,如何对特定变更集进行无根据的合并?- 这告诉我没有要合并的更改。
我想要实现的是这样的 TFS :可以将搁置集恢复到另一个位置吗?除了变更集。
在 GIT 中,我认为这将是一个简单的选择。
我的结构看起来像:
问题是如何在不通过 X 的情况下将 C2 从 Y 获取到 Z?
git - Git 樱桃采摘的合并跟踪?
例如,我有一个dev
分支和一个stable
分支。
dev
以防我从to中挑选了几个提交stable
。
有什么方法可以让 Git 知道樱桃挑选的提交,并避免双重合并它,如果我以后合并、变基或挑选重叠的范围,从dev
back 到stable
? (这是 SVN 中的基本合并跟踪功能)
git - Git:在分支之间移动更改而不更改工作目录
用例:每次我想将提交从一个 git 分支移动到另一个分支时,我都会执行以下一系列操作:
- [提交到工作分支]
git checkout
分支合并到git cherry-pick
目标提交git push
git checkout
工作分支
唯一的例外情况很好 - 每次我执行 'git checkout' 时,git 工作目录内容都会更改(预期),这会导致我的 IDE(IntelliJ IDEA)执行内部状态更新(因为受监控的文件系统子树在外部被修改)。这真的很烦人,尤其是在大量小提交的情况下。
我看到了两种方法:
- 执行“大量挑选”,即执行大量提交;将他们转移到另一个分支机构,例如在工作日结束时;
- 有第二个本地 git 存储库并对其执行樱桃选择,即每次实际提交和推送到工作分支时,转到第二个存储库,拉取更改并在那里执行樱桃选择;
我不喜欢第一种方法,因为它可能会忘记移动特定的提交。第二个看起来有点……不自然。
基本上,如果我可以说 git '将这个提交从名为 branchX 的分支移动到分支 branchX+1' 而不更新工作目录,那将是完美的。
问题:是否可以执行上述操作?
git - 将相同的文件重命名更改应用于不同的 GIT 分支
我有一个项目,它有一个 master 分支和一个 stable 分支 - 分支很久以前就分道扬镳了。现在我在稳定分支上有几个提交,我也想在主分支上提交(一个错误修复)。我无法合并,因为分支分歧并且有大量未合并的更改 - 我只想要 4 次提交。
所以我尝试了樱桃采摘。但是,由于顶级模块名称从“项目模块”方案更改为“模块”,因此这失败了。挑选樱桃时,GIT 在旧目录中创建新文件(如在旧分支上):未检测到重命名。这可能是因为我收到了这个警告:
我尝试了 git format-patch + git am,但这又在旧目录中创建了文件。
如何将提交应用到主分支?
谢谢,亚当
git - git cherry-pick -x:链接详细而不是摘要
给定带有消息“foo”的提交,即只有摘要部分,我会这样做git cherry-pick -x the_commit
。结果是带有消息的新提交
但是如何在不手动编辑评论的情况下让 git 使评论如下所示?
git - git cherry-pick 说存在本地更改,但 git status 什么也没说
更新对不起,我切换到另一个分支,然后再次切换回来,并且无法再重现这个:(