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

git - git 将一个提交的更改应用到另一个分支

我想做一些类似于 git rebase 但不折叠并行提交的事情。

假设我有以下提交:

现在我想将 D 引入到分支 foo 中的 C 的更改,并将它们应用于分支 bar 中的 B。所以我最终得到以下结果:

提交 B 和 E 之间的差异等于提交 C 和 D 之间的差异。这可能吗?有没有办法在不创建补丁的情况下做到这一点?

0 投票
0 回答
55 浏览

git - Git开发周期

我有一个正在 git 修订的应用程序。我为此应用程序创建了一个模块。尽管模块存储库仅包含特定于其功能的文件,但这两个存储库共享相同的文件结构。两者都是本地的。出于开发目的,我需要在远程站点上进行测试。到目前为止,我有:

1)在本地克隆应用程序存储库 2)将模块存储库添加为远程并获取

我理想的解决方案是:

1)将更改推送到本地存储库(无需合并)

现在,我正在创建一个本地分支来复制模块存储库,并尝试将其重新设置在主分支之上,并收到有关“挑选”我的提交的错误。

有人对我将如何实现这一目标有任何想法吗?

0 投票
1 回答
195 浏览

git - 奇怪的 git cherry-pick 行为

我在一个不同的分支上有一个提交,它只是在一个新目录中添加了一堆文件。

假设提交有 id123456并且它添加了一个名为foofull of stuff 的目录。

现在在我的另一个分支中,从一个干净的工作树中,我git cherry-pick 123456希望它只是添加foo目录。

但不是!樱桃挑选失败并包括对其他文件的大量其他更改(!)给我未合并的路径。

当然,您正在挑选的提交必须包含一些您不知道/不期望的东西,然后呢?好吧,不,git show --oneline --name-status 123456 | grep -v foo什么都不返回。即所有 . 之外的任何文件都没有发生任何变化foo

发生了什么事,我怎样才能正确地挑选这个提交?

0 投票
1 回答
307 浏览

git - Git:如何将文件与之前提交的版本合并?

我在提交 A 中对文件进行了一些更改,然后我错误地撤消了更改,并继续在提交 B 和 C 中进行更改。

我希望提交 A 中的更改在我的文件中,但 B 和 C 中的更改也不应该丢失。

假设我的分支现在在 C.

我不想

因为我希望文件包含我在 B 和 C 中所做的更改,并且从提交 A 中签出文件将重写索引和工作树中的文件。

我不能做一个樱桃选择,因为提交 A 是一个合并提交(存储库有两个贡献者,我删除了我的导师在合并后的后续提交中错误地做出的更改),我最终可能会得到一个如果我指定了任何一个父母,那就一团糟。

除了手动复制文件中我想要的更改之外,还有其他方法可以完成此操作吗?

0 投票
3 回答
111 浏览

git - 在一个分支中合并提交

我是 Git 新手。

我创建了一个新分支new_branch。我已经在不同的分支中完成了所有更改和提交old_branch。现在我想从分支中挑选一些提交old_branchnew_branchby git cherry-pick。为此,我首先需要知道该分支中有哪些提交,然后选择它们并与new_branch.

我怎样才能做到这一点?

0 投票
1 回答
1002 浏览

git - 更详细的 git cherry

我正在寻找 git cherry 表现得更像git log.

我的 git 存储库中有两个独立的分支(svn 导入的结果)。没有共同的祖先,他们之间没有合并。我不希望这两个分支永远连接,即使它们涉及同一个项目。

这两个分支是:

master(干净的行,可发布的代码)

old_trunk(垃圾开发分支,带有实验性提交以及我想要挑选的那些)

现在,

正确识别已经应用到主服务器的变更集(因为 svn merge 的工作更像是一个樱桃选择)。

但是 git 日志:

显示尚未应用于 master 的所有提交。它要么坏了,要么使用不同的机制来寻找樱桃。

我正在寻找一种解决方案来浏览old_trunk历史以查看作者,查看提交日期,查看完整的提交消息,最重要的是能够区分已经完成的樱桃挑选。

有什么想法吗?

0 投票
1 回答
804 浏览

git - 如何追溯地将提交添加到 Git 存储库?

我正在创建一个将第三方库移植到另一个平台的模块。我的模块的版本与它包装的 lib 的版本相匹配。

出于这个问题的目的,假设 lib 版本为 10,因此我的模块也在版本 10 上。

Git refs 看起来像这样:

但是,出于兼容性原因,我也希望创建包装器的版本 8 和 9。

如果我承诺v9,它将成为新的HEAD,但我想HEAD坚持下去v10。我只想v9通过

有没有办法做到这一点?

请注意,我是一个 git noob。我听说过变基和樱桃采摘,但我对它们中的任何一个都不太了解。接受的答案将提供解决方案和解释。

0 投票
1 回答
1430 浏览

gerrit - 如何挑选一个包含所有依赖项的补丁?

我看过这2个帖子:

  1. https://code.google.com/p/gerrit/issues/detail?id=1123
  2. https://groups.google.com/forum/#!msg/repo-discuss/qlP-Yxlxg68/yWJxZVR9mnQJ

是否启用?

0 投票
2 回答
899 浏览

git - git cherry-pick:如何只考虑提交修改的行(即,不是周围的上下文)?

我有一个有两个分支的项目:

我想在 branch2 上应用提交 E(但不是 D)。

我使用git cherry-pickgit mergetool(使用meld)来解决冲突。到目前为止,一切都很好。

但是,假设提交 C 后文件的状态是

并且提交 E 引入的更改是

我希望mergetool默认显示的结果是

(即,E1 和 E2 行根据提交 E 更改,但内部上下文保留在当前分支中)。

相反,默认情况下合并工具(即融合)显示:

这真的没有意义。

如何指示 git cherry-pick 保留来自 branch2 的上下文,并且只考虑对提交 E 修改的行的更改?

0 投票
0 回答
390 浏览

git - Git cherry-pick、github 分支比较和 SHA id,哦,我的

我有一个关于樱桃采摘的问题。我们有一个有两个主要分支的项目:部署和开发(这是一个简化但准确的视图)。部署是我们已经部署到我们的生产服务器的东西,而开发是我们正在处理的东西(对于个别功能/修复/等,开发的功能分支)。

我们有一个提交从功能分支合并到开发中(通过来自单个开发人员分支的 GitHub 拉取请求),我们需要将其推送到生产中。在开发中还有其他一些我们还不想部署到部署中的提交,所以我做了一个git checkout deploy && git cherry-pick 049cae3 && git push获取我们需要的一个提交。一切正常,代码被推送到生产环境。但是,我们有一个状态仪表板,它使用 GitHub API 对 deploy..develop 进行比较,以查看我们在 develop 上堆积了多少未在 deploy 上的提交。我注意到这个数字没有改变,当我查看 github 上的比较页面时,我的cherry-pick'd 提交仍然出现在差异中。我猜这是因为cherry-pick 将提交与新的 SHA 一起应用,因此 GitHub 不会将其视为在两个分支中——它们是两个不同的提交。

这可能没什么大不了的,因为在某些时候我们会将开发合并到部署中,但是我可能会有重复的提交,对吧?(是的,我们正在合并,rebase 让我害怕,我还没有真正弄清楚)。

所以:考虑到我需要一个特定提交的情况,选择樱桃是正确的方法吗?如果不是,那是什么?