标签: cherry-pick

"backport"的工作流程变为不同的Mercurial(Hg)分支?

我们有两个脑袋.一个是我们的主要开发负责人,另一个是我忘记了直到今天.我们发现了一个错误并将其修复到我们的主要开发分支中,我刚刚意识到它应该在旧分支中修复.

我认为最好在旧分支上进行更改并将其与最新分支合并,但我们并没有这样做.mercurial可以处理这个吗?我们还没有尝试过这样的事情,我无法真正理解它将如何完成.

version-control mercurial branch cherry-pick

11
推荐指数
1
解决办法
2205
查看次数

如何在没有历史的系统上从分支A到分支B进行挑选?

假设我有一个没有git历史的新系统,我对分支A进行了新的检查.分支A已经有一个提交C1,我昨天从其他系统做过.现在我想在分支B中挑选这个提交C1.问题:

  1. 如果我拿出分支A的结账并转到提交C1(在Git视图中的历史记录中)并点击'cherry pick',它表示你想在分支A中挑选樱桃吗?所以,这里没有关于分支B的讨论.
  2. 如果我检查分支B,它将不会显示提交C1.

现在,我如何将分支A的C1提交到分支B?我在日食中使用Gerrit,GitBlit和EGit.

eclipse git cherry-pick gerrit

11
推荐指数
3
解决办法
2万
查看次数

git cherry-pick不只是选择提交的差异

我有两个分支:AB.

  • A的承诺历史:a <- b <- c;
  • B的承诺历史:a <- h <- i;

假设这里只有一个文件.

  1. 在提交中b,我添加了一些像"foo"这样的文本.
  2. 在提交中c,我添加了一些像"bar"这样的文本.
  3. 然后我git cherry-pick cB分支上.我以为cherry-pick只会选择c分支的变化B.但是,它会添加foobar分支B.这显然不是我想要的.

因此,cherry-pick将从c祖先提交后选择提交中触及的那些文件的所有更改a.是对的吗?如果我只想要什么,从挑DIFF bc并应用到i

更新确切的步骤

  1. 创建一个git repo;
  2. 添加文件test.txt并发出第一个提交init commit.test.txt就是现在:

    first line  
    second line
    
    Run Code Online (Sandbox Code Playgroud)
  3. 创建一个新分支dev但留在分支机构master; …

git cherry-pick

11
推荐指数
1
解决办法
1577
查看次数

当将更改推送到远程分支时,git说所有内容都是最新的

我有一个远程存储库(origin/master)中的提交,我想把它放在从该存储库创建的分支(origin/remote_branch)中.

当我结账到那个远程分支

git checkout -b mybranch origin/remote_branch
Run Code Online (Sandbox Code Playgroud)

然后樱桃挑选了我做的承诺

git cherry-pick 9df63616b0428cf6edc4261adb533a1ac516b9a0
Run Code Online (Sandbox Code Playgroud)

当我试图推动时,git说什么都是最新的.

git push
Run Code Online (Sandbox Code Playgroud)

有什么我做错了吗?

git push cherry-pick git-checkout

10
推荐指数
1
解决办法
6666
查看次数

Git - 如果我想拥有一致的工作流程,挑选樱桃是一种不好的做法吗?

我发现cherry-pick在某些情况下特别有用,例如,当我有一个feature1分支和一个test-feature1分支时,我想应用测试中发现的更正;或者换句话说,我想测试新功能,为此我需要在测试分支中使用这些新功能。

cherry-pick这里的好处是我可以选择我想在其他分支中应用的具体更改;也许合并整个分支并不有趣。

我在过去的项目中一直在使用它,但我认为这种做法会导致工作流程不一致。是cherry-pick-ing一个不推荐和可避免的做法?

git cherry-pick

10
推荐指数
2
解决办法
5846
查看次数

在cherry-pick操作上可以执行哪些git hooks?

我正在尝试找到一种方法来在挑选它们时检查提交。不幸的是,我找不到与cherry-pick操作一起使用的 git hook。在精心挑选的提交上执行脚本的可能解决方案是什么?

git cherry-pick git-cherry-pick

10
推荐指数
1
解决办法
1077
查看次数

用git-svn挑选樱桃

我面临的问题是将一个修订的子集从一个主题分支合并到另一个主题分支.由于我使用git-svn,我很想知道是否可以使用樱桃采摘.使用Subversion,我会这样做:

svn merge -c A
svn merge -c B
svn merge -c C
...
svn commit ...
Run Code Online (Sandbox Code Playgroud)

如果我尝试这样做会发生什么?

git checkout branch1
git cherry-pick A
git cherry-pick B
git cherry-pick C
git svn dcommit
Run Code Online (Sandbox Code Playgroud)

如果我阅读git svn man-page,答案就是"不要那样做",但是当我在谷歌上搜索git时,我会得到一个印象.现在这些问题做得更好.

svn git cherry-pick

9
推荐指数
2
解决办法
5778
查看次数

如何使用git-subtree转到特定的提交?

我正在使用Avery Pennarun的git-subtree,它是git的扩展.

我如何使用git子树从子仓库中挑选一个提交到我的主仓库?另外,在我已经对该前缀进行git子树拉取之后,如何进入子回购历史中的特定提交?

我主要在壁球提交模式下运行它.

git cherry-pick git-subtree

9
推荐指数
1
解决办法
4365
查看次数

樱桃选择问题:也会应用以前提交的更改

在我的项目中,我几个月前发布了一个版本.在那个版本之后,我在master分支上做了很多更改.

如果我在最后一个版本中遇到一些错误,我会在主分支上修复它们,然后将它们挑选到我在上一版本中创建的分支.然后我可以提供一个只有bug修复的新版本,而不释放master分支上未完成的工作.

当我试图挑选一个错误修复发布分支时,我遇到了合并冲突.

据我所知,cherry选择某个提交会向目标分支引入一个新提交,并在提取的提交中完成更改.

但是,当我尝试修复合并冲突时,似乎git已经在master分支上应用了更改,这些更改不是由我选择的提交提交给我的发布分支.樱桃选择提交只引入了冲突文件的几行.但是,当我尝试解决冲突时,我看到该文件中还引入了其他几行,这些行被添加到具有不同提交的主分支中.

有人可以解释为什么我的发布分支中引入了除了樱桃挑选提交之外的提交更改吗?

git cherry-pick git-cherry-pick

9
推荐指数
1
解决办法
5101
查看次数

更改提交的父级

我尝试将提交移动到另一个分支之上,忽略目标分支中完成的所有更改。

\n\n

目前的情况是:

\n\n
      master\n        \xe2\x86\x93\n--A--B--C\n   \\\n    D--E\n
Run Code Online (Sandbox Code Playgroud)\n\n

我想将提交 E 移到 C 前面

\n\n
      master\n        \xe2\x86\x93\n--A--B--C--E\'\n   \\\n    D--E\n
Run Code Online (Sandbox Code Playgroud)\n\n

E\' 与 E 相同,只是父级现在是 C 而不是 D(这意味着 E 和 E\' 的树应该相同)。

\n\n

更确切地说:

\n\n
"git cat-file -p E" shows e.g.\ntree b98c9a9f9501ddcfcbe02a9de52964ed7dd76d5a\nparent D\n\n"git cat-file -p E\'" should show\ntree b98c9a9f9501ddcfcbe02a9de52964ed7dd76d5a\nparent C\n
Run Code Online (Sandbox Code Playgroud)\n\n

我尝试使用不同的参数进行 rebase 以及cherry-pick,但所有这些最终都尝试将 C 中所做的任何更改合并到新的 E\' 提交中:(

\n\n

到目前为止我发现的唯一防止大规模合并的解决方案是

\n\n
check out C\ncopy over all stuff from E to C\ncommit and get E\'\n
Run Code Online (Sandbox Code Playgroud)\n\n

现在树是相同的,父对象不同,但必须有一种更简单、更快的方法,因为所要做的就是使用现有的树对象创建一个简单的提交对象。

\n

git merge move rebase cherry-pick

8
推荐指数
1
解决办法
4168
查看次数