问题标签 [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.
git - git 将一个提交的更改应用到另一个分支
我想做一些类似于 git rebase 但不折叠并行提交的事情。
假设我有以下提交:
现在我想将 D 引入到分支 foo 中的 C 的更改,并将它们应用于分支 bar 中的 B。所以我最终得到以下结果:
提交 B 和 E 之间的差异等于提交 C 和 D 之间的差异。这可能吗?有没有办法在不创建补丁的情况下做到这一点?
git - Git开发周期
我有一个正在 git 修订的应用程序。我为此应用程序创建了一个模块。尽管模块存储库仅包含特定于其功能的文件,但这两个存储库共享相同的文件结构。两者都是本地的。出于开发目的,我需要在远程站点上进行测试。到目前为止,我有:
1)在本地克隆应用程序存储库 2)将模块存储库添加为远程并获取
我理想的解决方案是:
1)将更改推送到本地存储库(无需合并)
现在,我正在创建一个本地分支来复制模块存储库,并尝试将其重新设置在主分支之上,并收到有关“挑选”我的提交的错误。
有人对我将如何实现这一目标有任何想法吗?
git - 奇怪的 git cherry-pick 行为
我在一个不同的分支上有一个提交,它只是在一个新目录中添加了一堆文件。
假设提交有 id123456
并且它添加了一个名为foo
full of stuff 的目录。
现在在我的另一个分支中,从一个干净的工作树中,我git cherry-pick 123456
希望它只是添加foo
目录。
但不是!樱桃挑选失败并包括对其他文件的大量其他更改(!)给我未合并的路径。
当然,您正在挑选的提交必须包含一些您不知道/不期望的东西,然后呢?好吧,不,git show --oneline --name-status 123456 | grep -v foo
什么都不返回。即所有 . 之外的任何文件都没有发生任何变化foo
。
发生了什么事,我怎样才能正确地挑选这个提交?
git - Git:如何将文件与之前提交的版本合并?
我在提交 A 中对文件进行了一些更改,然后我错误地撤消了更改,并继续在提交 B 和 C 中进行更改。
我希望提交 A 中的更改在我的文件中,但 B 和 C 中的更改也不应该丢失。
假设我的分支现在在 C.
我不想
因为我希望文件包含我在 B 和 C 中所做的更改,并且从提交 A 中签出文件将重写索引和工作树中的文件。
我不能做一个樱桃选择,因为提交 A 是一个合并提交(存储库有两个贡献者,我删除了我的导师在合并后的后续提交中错误地做出的更改),我最终可能会得到一个如果我指定了任何一个父母,那就一团糟。
除了手动复制文件中我想要的更改之外,还有其他方法可以完成此操作吗?
git - 在一个分支中合并提交
我是 Git 新手。
我创建了一个新分支new_branch
。我已经在不同的分支中完成了所有更改和提交old_branch
。现在我想从分支中挑选一些提交old_branch
到new_branch
by git cherry-pick
。为此,我首先需要知道该分支中有哪些提交,然后选择它们并与new_branch
.
我怎样才能做到这一点?
git - 更详细的 git cherry
我正在寻找 git cherry 表现得更像git log
.
我的 git 存储库中有两个独立的分支(svn 导入的结果)。没有共同的祖先,他们之间没有合并。我不希望这两个分支永远连接,即使它们涉及同一个项目。
这两个分支是:
master
(干净的行,可发布的代码)
old_trunk
(垃圾开发分支,带有实验性提交以及我想要挑选的那些)
现在,
正确识别已经应用到主服务器的变更集(因为 svn merge 的工作更像是一个樱桃选择)。
但是 git 日志:
显示尚未应用于 master 的所有提交。它要么坏了,要么使用不同的机制来寻找樱桃。
我正在寻找一种解决方案来浏览old_trunk
历史以查看作者,查看提交日期,查看完整的提交消息,最重要的是能够区分已经完成的樱桃挑选。
有什么想法吗?
git - 如何追溯地将提交添加到 Git 存储库?
我正在创建一个将第三方库移植到另一个平台的模块。我的模块的版本与它包装的 lib 的版本相匹配。
出于这个问题的目的,假设 lib 版本为 10,因此我的模块也在版本 10 上。
Git refs 看起来像这样:
但是,出于兼容性原因,我也希望创建包装器的版本 8 和 9。
如果我承诺v9
,它将成为新的HEAD
,但我想HEAD
坚持下去v10
。我只想v9
通过
有没有办法做到这一点?
请注意,我是一个 git noob。我听说过变基和樱桃采摘,但我对它们中的任何一个都不太了解。接受的答案将提供解决方案和解释。
git - git cherry-pick:如何只考虑提交修改的行(即,不是周围的上下文)?
我有一个有两个分支的项目:
我想在 branch2 上应用提交 E(但不是 D)。
我使用git cherry-pick和git mergetool(使用meld)来解决冲突。到目前为止,一切都很好。
但是,假设提交 C 后文件的状态是
并且提交 E 引入的更改是
我希望mergetool默认显示的结果是
(即,E1 和 E2 行根据提交 E 更改,但内部上下文保留在当前分支中)。
相反,默认情况下合并工具(即融合)显示:
这真的没有意义。
如何指示 git cherry-pick 保留来自 branch2 的上下文,并且只考虑对提交 E 修改的行的更改?
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 让我害怕,我还没有真正弄清楚)。
所以:考虑到我需要一个特定提交的情况,选择樱桃是正确的方法吗?如果不是,那是什么?