Questions tagged «cherry-pick»

在源代码管理管理中,有选择地将单个更改从同级转移到同级的动作称为“樱桃选择”。


12
如何挑选多个提交
我有两个分支。提交a是一个头,而其他有b,c,d,e和f之上a。我想移动c,d,e和f第一支没有提交b。使用樱桃挑选很容易:将第一个分支逐个签出c,f然后将第二个分支重新建立到第一个分支上。但有什么办法可以摘樱桃所有c- f在一个命令? 这是该场景的直观描述(感谢JJD):

11
是否可以从另一个git存储库中挑选提交?
我正在使用一个git存储库,该存储库需要来自另一个不了解任何内容的git存储库的提交。 通常,我会HEAD@{x}在reflog中使用来进行选择,但是由于对此.gitreflog条目(不同的物理目录)一无所知,我该如何选择它? 我正在使用git-svn。我的第一个分支使用git-svn的trunk一个颠覆回购,而下一个分支是在git-svn上一个Subversion分支。
724 git  cherry-pick 

12
如何git-cherry-pick仅更改某些文件?
如果我想合并到Git分支中,而仅对某些提交中的某些文件所做的更改(包括对多个文件的更改)进行更改,那么如何实现呢? 假设git的承诺称为stuff具有对文件的改变A,B,C,和D,但我想只合并stuff的对文件的更改A和B。这听起来像是一项工作,git cherry-pick但cherry-pick只知道如何合并整个提交,而不是文件的子集。
586 git  github  cherry-pick 

5
git cherry-pick说:“…38c74d是合并,但未提供-m选项”
我在master分支中进行了一些更改,并希望将其引入上游。当我选择以下提交时,但是我陷入了git说的fd9f578上: $ git cherry-pick fd9f578 fatal: Commit fd9f57850f6b94b7906e5bbe51a0d75bf638c74d is a merge but no -m option was given. git试图告诉我什么,并且在这里正确使用是正确的选择?master分支确实包含对文件的更改,这些更改已在上游分支中进行了修改,因此我确定会有一些合并冲突,但是合并冲突还算不错。我知道哪些地方需要更改。 这些是我想带入上游的提交。 e7d4cff added some comments... 23e6d2a moved static strings... 44cc65a incorporated test ... 40b83d5 whoops delete whitspace... 24f8a50 implemented global.c... 43651c3 cleaned up ... 068b2fe cleaned up version.c ... fd9f578 Merge branch …
518 git  merge  rebase  cherry-pick 

4
哪些Git分支模型适合您?
我们公司目前正在使用简单的主干/发行版/修补程序分支模型,并希望就哪种分支模型最适合您的公司或开发过程提出建议。 工作流程/分支模型 以下是我所见过的三个主要描述,但它们在某种程度上相互矛盾,或者不足以解决我们遇到的后续问题(如下所述)。因此,到目前为止我们的团队默认的解决方案不是那么好。你做得更好吗? gitworkflows(7)手册页 (nvie)成功的Git分支模型 (reinh)敏捷团队的Git工作流程 合并与重新计算(纠结与顺序历史记录) 还是应该pull --rebase等待合并回到主线,直到任务完成?就个人而言,我倾向于合并,因为这保留了任务开始和完成的基础的可视化插图,我甚至更喜欢merge --no-ff此目的。但是,它还有其他缺点。另外,许多人还没有意识到合并的有用特性-它不是可交换的(将主题分支合并到master并不意味着将master合并到主题分支)。 我正在寻找自然的工作流程 有时会发生错误,因为我们的过程无法使用简单的规则捕获特定的情况。例如,早期版本所需的修复程序当然应该基于足够的下游,以便可以将上游合并到所有必要的分支中(这些术语的用法是否足够清楚?)。但是,碰巧的是,在开发人员意识到应该将修补程序放置在更下游之前,将修补程序放入了母版中,如果该修补程序已经被推送(甚至更糟,已合并或基于此内容),那么剩下的选择就是挑剔的选择,其相关的危险。您使用什么样的简单规则?这也包括一个主题分支的尴尬,它必然排除其他主题分支(假设它们是从同一基准分支出来的)。开发人员不想完成一项功能就可以开始另一种功能,就像他们刚刚编写的代码不再存在一样 如何避免造成合并冲突(由于选择问题)? 建立合并冲突的肯定方法是在分支之间进行选择,它们再也无法合并了吗?是否可以在任一分支的还原中应用相同的提交(如何执行此操作?)可能会解决这种情况?这是我不敢推动基于合并的工作流的原因之一。 如何分解成局部分支? 我们意识到,从主题分支组装完成的集成会很棒,但是我们开发人员的工作通常没有明确定义(有时像“四处寻找”一样简单),并且如果某些代码已经进入“杂项”主题,根据上面的问题,它不能再次带出那里吗?您如何定义/批准/毕业/发布主题分支? 适当的程序,例如代码检查和毕业,当然会很可爱。 但是我们根本无法解决问题,有任何建议吗?整合分支,插图? 以下是相关问题的列表: 有哪些好的策略可允许已部署的应用程序可修复。 内部开发使用Git的工作流程说明 用于企业Linux内核开发的Git工作流程 您如何维护开发代码和生产代码?(感谢此 PDF!) git发布管理 Git Cherry-pick vs合并工作流程 如何挑选多个提交 如何使用git-merge合并选择性文件? 如何挑选一系列提交并合并到另一个分支 ReinH Git工作流程 进行修改的git工作流,您将永远不会回到原点 樱桃挑选合并 适用于OS和私有代码的正确Git工作流程? 用Git维护项目 为什么Git不能使用修改后的父/母合并文件更改。 Git分支/重新建立良好实践 什么时候“ git pull --rebase”会惹上麻烦? 大型团队如何使用DVCS? 还请查看Plastic SCM在任务驱动开发方面写的内容,如果您不是选择Plastic,请研究nvie的分支模型及其支持脚本。

3
Git Cherry-pick vs合并工作流程
假设我是仓库的维护者,并且想从贡献者那里获取更改,那么可能有一些工作流程: 我cherry-pick每个人都从远程提交(按顺序)。在这种情况下,git将提交记录为与远程分支无关。 我merge分支,拉动所有的变化,并增加了新的“冲突”提交(如果需要)。 我merge每个人都从远程分支分别提交(再次按顺序提交),从而允许为每个提交记录冲突,而不是将所有冲突归为一个组。 为了完整起见,您可以做一个rebase(与cherry-pick选项相同?),但是我的理解是,这可能会使贡献者感到困惑。也许消除了选项1。 在2和3的情况下,git都记录提交的分支历史,这与1不同。 使用cherry-pick或merge描述的方法之间的优缺点是什么?我的理解是方法2是规范,但是我觉得用单个“冲突”合并来解决大型提交并不是最干净的解决方案。
302 git  merge  cherry-pick 

10
删除特定的提交
我和一个朋友一起在一个项目上工作,他编辑了一堆本不应该编辑的文件。我以某种方式将他的作品合并到我的作品中,或者当我将其合并时,或者当我试图只选择想要的特定文件时。我一直在寻找和玩耍很长时间,试图弄清楚如何删除包含对这些文件所做的修改的提交,这似乎是在还原和重新设置之间的一次折腾,并且没有简单的示例,并且文档假设我比我知道的更多。 因此,这是问题的简化版本: 在以下情况下,如何删除提交2? $ mkdir git_revert_test && cd git_revert_test $ git init Initialized empty Git repository in /Users/josh/deleteme/git_revert_test/.git/ $ echo "line 1" > myfile $ git add -A $ git commit -m "commit 1" [master (root-commit) 8230fa3] commit 1 1 files changed, 1 insertions(+), 0 deletions(-) create mode 100644 myfile …

2
摘樱桃后git如何合并?
假设我们有一个master分支。 然后我们创建一个 newbranch git checkout -b newbranch 并向以下两个新提交newbranch:commit1和commit2 然后我们切换到主人 cherry-pick git checkout master git cherry-pick hash_of_commit1 调查gitk我们发现,commit1及其精选版本具有不同的哈希值,因此从技术上讲,它们是两个不同的提交。 最后,我们合并newbranch为master: git merge newbranch 并看到这两个具有不同哈希值的提交没有问题地合并在一起,尽管它们暗示应该将相同的更改应用两次,所以其中之一应该失败。 git真的在合并时对提交内容进行了智能分析,并决定不应两次应用更改,或者这些提交在内部被标记为链接在一起吗?

1
如何从一个分支到另一个分支挑选樱桃
我有2个分支,master并且dev。 我在dev分支上,我想从选择master到1提交dev。所以我做了 $ git cherry-pick be530cec7748e037c665bd5a585e6d9ce11bc8ad Finished one cherry-pick. 但是当我执行git status和时gitx,我be530cec7748e037c665bd5a585e6d9ce11bc8ad在git历史记录中看不到自己的提交。 我如何在dev分支中看到我的提交?

4
git cherry-pick不起作用
我正在尝试从master那里挑选一个提交并将其提交到当前的生产分支中。但是,当我执行时git cherry-pick <SHA-hash>,我只会收到以下消息: # On branch prod_20110801 # Untracked files: # (use "git add <file>..." to include in what will be committed) # site/test-result/ nothing added to commit but untracked files present (use "git add" to track) The previous cherry-pick is now empty, possibly due to conflict resolution. If you …

2
在Mercurial中使用嫁接的后果
最近在维护Mercurial中的发行分支时,有一些关于跳过更改的问题。例如: Mercurial:虚拟合并后,分支特定的更改会继续出现 为什么一个分支机构中的Mercurial退出影响其他分支机构? 自从2.0版引入以来,我一直想知道如何使用它graft来避免此问题。给定这样的修订树: A---B---C---D---E---F---G---H---I---J 假设我们需要创建一个跳过Evil更改的发行分支E。 hg update -r D hg graft "F::J" 给我们: A---B---C---D---E---F---G---H---I---J \ --F'--G'--H'--I'--J' 问题1:这里发生了什么?我可以理解,这transplant会从中生成补丁F::J,然后将其应用到D,但graft据说使用的是3向合并,而不是补丁。所以.......这是怎么工作的?为什么会更好? 可以说我现在修复了E,并将其合并到我的发布分支中。 --E2----------------- / \ A---B---C---D---E---F---G---H---I---J---M1 \ \ --F'--G'--H'--I'--J'---------M2-- M1是直接合并;那里没什么特别的。M2是合并分支,这些分支具有“相同”(或至少等效)的更改。 Q2:这是合并只是使用普通的3路合并D,J'以及M1? 问题3:Mercurial是否存储/使用了有关嫁接操作的额外信息以帮助合并? 最后... 问题4:这样的流程有哪些潜在问题?


4
推送GIT更改时出错。引用名称必须遵循git ref-format规则
我在Sourcetree上使用git时遇到一个错误。我创建了一个本地分支,名为sprints / Mycompany_sprint_1(因为我希望将其归为一个类别),然后从另一个分支对该分支进行了多次樱桃挑选。之后,我尝试将所有更改推送到我的分支上,但是我收到下一个错误: 远程分支''(本地分支='sprints / Mycompany_sprint-1')无效。引用名称必须遵循git ref-format规则:https : //www.kernel.org/pub/software/scm/git/docs/git-check-ref-format.html 完成但有错误,请参见上文。 但是,如果我转到该链接,则将遵循(到目前为止)所有规则,因为在第一条规则上查找: 它们可以包括斜杠/用于层次结构(目录)分组,但是斜杠分隔的组件不能以点开头。或以序列.lock结尾。我检查问题是否可能是弹簧类别已经存在,但不是这样。 有人可以告诉我我在做什么错吗?我很害怕在这里看不到错误...
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.