标签: cherry-pick

git cherry-pick不起作用

我正在尝试从主人那里挑选一个提交并将其放入当前的生产分支.但是,当我执行时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 wish to commit it anyway, use:

    git commit --allow-empty

Otherwise, please use 'git reset'
Run Code Online (Sandbox Code Playgroud)

注意:我尝试过重置和重置 - 硬HEAD ^,似乎都没有改变任何东西.

我很困惑为什么这不适合我.

任何关于如何解决这个问题的见解,建议或想法都会有所帮助〜!

git cherry-pick branching-and-merging

98
推荐指数
4
解决办法
5万
查看次数

在Mercurial中使用移植物的后果

最近有几个关于在Mercurial中维护发布分支时跳过更改的问题.例如:

自从它在2.0中引入以来,我一直想知道如何graft避免这个问题.给定这样的修订树:

A---B---C---D---E---F---G---H---I---J
Run Code Online (Sandbox Code Playgroud)

假设我们需要创建一个跳过Evil更改的发布分支E.

hg update -r D
hg graft "F::J"
Run Code Online (Sandbox Code Playgroud)

给我们:

A---B---C---D---E---F---G---H---I---J
             \
              --F'--G'--H'--I'--J'
Run Code Online (Sandbox Code Playgroud)
  • Q1:这里发生了什么?我可以理解,它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--
Run Code Online (Sandbox Code Playgroud)

M1是直接合并; 没什么特别的.M2正在合并具有"相同"(或至少等同)变化的分支.

  • Q2:这个合并只是一个正常的3路合并使用D,J'M1
  • 问题3:mercurial存储/使用有关移植操作的额外信息以帮助它合并吗?

最后......

  • 问题4:像这样的流程存在哪些潜在问题?

version-control mercurial branch dvcs cherry-pick

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

我如何在Mercurial中挑选一个修订版?

在Mercurial/TortoiseHg中,给出以下示例,将修订版"G"合并到回购A而不采用D,E和F(假设G不依赖于D,E或F)的最简单方法是什么.

Repo A: A - B - C

Repo B (Clone of A) A - B - C - D - E - F - G
Run Code Online (Sandbox Code Playgroud)

补丁是最好的选择吗?

mercurial tortoisehg cherry-pick

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

Git cherry-pick语法和合并分支

所以我以前做了无数的樱桃选择,似乎我现在必须在生活中失败,我想尝试从一个分支到另一个分支,这应该是容易的,我怎么会得到一个关于它是合并的错误但是不是给了-m?

$ git cherry-pick a8c5ad438f6173dc34f6ec45bddcef2ab23285e0
error: Commit a8c5ad438f6173dc34f6ec45bddcef2ab23285e0 is a merge but no -m option was given.
fatal: cherry-pick failed
Run Code Online (Sandbox Code Playgroud)

那看起来不对.......它应该是:

$ git cherry-pick a8c5ad438f6173dc34f6ec45bddcef2ab23285e0
Run Code Online (Sandbox Code Playgroud)

从什么时候开始我必须提供-m功能?

git cherry-pick git-cherry-pick

57
推荐指数
3
解决办法
5万
查看次数

cherry-pick一个提交并保留原始的SHA代码

我想在保留它的原始SHA提交代码的同时在提取的遥控器上挑选提交(我当前的分支基于这个我重置为先前状态的遥控器).

git commit sha cherry-pick

47
推荐指数
5
解决办法
2万
查看次数

如何结束Git Cherry-Pick?

昨天我挑选了两个提交到我的主分支,其中一个引起了合并冲突,我解决了它们,承诺并将它们推向原点.今天我收到以下错误时试图从服务器拉出来:

$ git pull
fatal: You have not concluded your cherry-pick (CHERRY_PICK_HEAD exists).
Please, commit your changes before you can merge.
$
Run Code Online (Sandbox Code Playgroud)

Git状态如下:

$ git status
# On branch main
# Your branch is behind 'origin/main' by 2 commits, and can be fast-forwarded.
#
$
Run Code Online (Sandbox Code Playgroud)

我试过以下无济于事:

$ git cherry-pick --continue
usage: git cherry-pick [options] <commit-ish>
$
Run Code Online (Sandbox Code Playgroud)

关于如何解决这个问题的任何想法?提前致谢!

git version-control cherry-pick git-cherry-pick

43
推荐指数
4
解决办法
3万
查看次数

Git Cherry-Pick和Conflicts

有两种不同的git分支.在一个开发进入(Branch1).

在其他分支中,一些PoC工作正在进行(Branch2).现在,我想挑选从Branch1到Branch2的更改,以便Branch2是最新的.

现在,在挑选了4或5个变化后,我发现了一些合并冲突,我无法继续进行更多挑选.

在进行下一次樱桃挑选之前,我需要解决所有冲突吗?或者我能否以某种方式推迟解决冲突,直到我挑选所有的变化(并一起解决所有冲突)?

此外,是否建议在这种情况下进行樱桃挑选或分支合并?

git cherry-pick git-cherry-pick

41
推荐指数
3
解决办法
8万
查看次数

撤消Subversion中的特定修订

假设我在存储库文件夹中有一组提交...

123 (250 new files, 137 changed files, 14 deleted files)
122 (150 changed files)
121 (renamed folder)
120 (90 changed files)
119 (115 changed files, 14 deleted files, 12 added files)
118 (113 changed files)
117 (10 changed files)
Run Code Online (Sandbox Code Playgroud)

我想获得一份工作副本,其中包括修订版117以后的所有更改,但不包括修订版118和120的更改.

编辑:为了使问题更清楚,我想撤消在118和120中所做的更改,同时保留所有其他更改.该文件夹包含数百个子文件夹中的数千个文件.

实现这一目标的最佳方法是什么?

得益于Bruno和Bert,答案就是命令(在这种情况下,在执行完全合并后删除120)

svn merge -c -120 .
Run Code Online (Sandbox Code Playgroud)

请注意,必须使用前导减号指定修订号.'-120'不是'120'

svn undo cherry-pick

30
推荐指数
2
解决办法
1万
查看次数

在Git樱桃挑选或rebase合并冲突中,BASE(又名"祖先"),LOCAL和REMOTE如何确定?

在正常的Git合并冲突中,三向合并的三个版本的文件大致如下:

  • LOCAL:我的分支机构的版本
  • REMOTE:来自其他分支的版本
  • BASE:来自两个分支的共同祖先的版本(特别是我的分支的HEAD的共同祖先和另一个分支的HEAD)

当一个Git樱桃挑选产生合并冲突时,没有共同的祖先,正确地说,那么这些东西是如何确定的?关于rebase也可以这样说.

git cherry-pick git-cherry-pick

27
推荐指数
1
解决办法
6022
查看次数

如何将大型Git分支拆分为许多较小的分支?

我从SVN导入Git,现在我有一个大分支,像这样:

  • 研究特征C.
  • 研究特征B.
  • 研究特征C.
  • 研究特征C.
  • 研究特征B.
  • 研究特征A.

我想要单独的功能分支,A,B,C.我是樱桃挑选新分支的提交,但这不会从原始分支中删除它们所以我必须手动跟踪我已经拔出的分支.

有大约800个提交要分开,也许有50个功能/错误修正.

如果我在git日志中以某种方式反映这种方式,那将是很好的,所以我知道我已经完成了哪些.这可能吗?

我可以重新整理整个分支,跳过我已经撤出的提交,但我担心这会导致很多冲突.我不想在每次提交时解决500个冲突.

将一个超级分支机构的提交提取到较小的功能分支上的最佳方法是什么,同时跟踪您的进度?

git branch cherry-pick

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