标签: cherry-pick

Git cherry pick和datamodel完整性

鉴于两个分支已经分歧,并且需要将一个分支(而不是所有内容)的特定提交引入另一个分支,git cherry pick就是这样.

一段时间后,需要完全合并两个分支.git将如何知道它已经过去曾经提交过的提交,以便它不会重新引入它?

git version-control merge cherry-pick

16
推荐指数
2
解决办法
2683
查看次数

为什么这个樱桃挑选有冲突?

我知道这git cherry-pick是一个用于应用指定提交更改的命令,但我认为我并不真正理解它的工作方式.

让我们说一个像这样的回购行为:

git init

echo a>a
git add .; git commit -am 'master add line a'

git checkout -b dev
echo b>>a
git commit -am 'dev add line b'
echo c>>a
git commit -am 'dev add line c'

git checkout master

git cherry-pick dev
Run Code Online (Sandbox Code Playgroud)

我认为cherry-pick命令会运行良好并将文件更改a为:

a

c
Run Code Online (Sandbox Code Playgroud)

但实际上我得到了以下信息:

error: could not apply 08e8d3e... dev add line c
hint: after resolving the conflicts, mark the corrected paths
hint: with 'git add <paths>' or 'git …
Run Code Online (Sandbox Code Playgroud)

git cherry-pick git-cherry-pick

16
推荐指数
1
解决办法
4557
查看次数

Git:在分支之间移动更改而不更改工作目录

用例:每次我想将提交从一个git分支移动到另一个git分支时,我执行以下操作序列:

  1. [进入工作分支]
  2. git checkout 分支到上合并成
  3. git cherry-pick 针对提交
  4. git push
  5. git checkout 工作分支

这是唯一的例外 - 每次我执行'git checkout'时,git工作目录内容被更改(预期)并导致我的IDE(IntelliJ IDEA)执行内部状态更新(因为受监视的文件系统子树被外部修改) ).这真的很烦人,特别是在大量小提交的情况下.

我看到两种方法:

  1. 执行'大规模樱桃选择',即执行大量提交; 比如,在工作日结束时将他们转移到另一个分支;
  2. 拥有第二个本地git存储库并对其执行cherry picks,即每次对工作分支执行实际提交和推送,转到第二个存储库,提取更改并在那里执行cherry pick;

我不喜欢第一种方法,因为它可能会忘记移动特定的提交.第二个看起来有点......不自然.

基本上,如果我能说git'将这个提交从名为branchX的分支移动到分支branchX + 1'而没有工作目录更新,那将是完美的.

问题:是否可以执行上述操作?

git cherry-pick git-checkout

15
推荐指数
2
解决办法
8589
查看次数

错误:在发送时,addinfo_cache失败了

我正在接受跟随错误,而樱桃采摘一个gerrit ...有没有人知道这意味着什么,为什么有人会看到它?

error: addinfo_cache failed for path 'ROE/NAS/src/abc.c
Run Code Online (Sandbox Code Playgroud)

cherry-pick gerrit git-cherry-pick

15
推荐指数
1
解决办法
6509
查看次数

Cherry pick显示没有-m选项被给出错误

我有两个分支大师和开发

我需要从master分支中的开发分支获取一些提交ID,所以我通过cherry-pick来实现它,但它显示了一些错误

$> git cherry-pick cf0d52b

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

我没有收到这个错误,为什么会出现这个错误,我将如何摆脱这个错误.

git cherry-pick

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

使用干净的工作目录将1个提交从一个分支(dev)复制到另一个分支(稳定)

我试图了解如何撤消提交并将更改提交到Git中的其他分支?但我认为不一定要那么难.(答案正在使用branch -f,stash而且我认为我不需要那些.)

我在我的开发部门工作.在脏工作目录中有两个不同的提交.在两个不同的提交中提交所有更改.最后一次提交是WIP(所以开发材料).倒数第二个完成,应该复制到stable分支.

我想象的东西

$ git copy e87568fa stable
Run Code Online (Sandbox Code Playgroud)

但我很确定不是这样.

樱桃采摘与它有关吗?

可以肯定:我希望提交保持不变dev.所以不是mv,但cp它.

我仍然对所有这些GIT选项和命令感到困惑.

git branch commit cherry-pick

14
推荐指数
1
解决办法
3398
查看次数

Git工作流程和Gerrit

我正在尝试使用Gerrit实现'git-flow'类型的工作流程,但我似乎无法弄清楚最后一块拼图.

我的问题有两个先决条件:

  • Gerrit只会执行合并到一个分支
  • 我不允许将合并提交推送到Gerrit.在批准更改后,Gerrit必须完成合并

我想要解决的是以下内容.考虑这个git情况:

Master 0 
        \
         \
Develop   0-----0-----0-----0
Run Code Online (Sandbox Code Playgroud)

有一个master分支有一个commit和一个develop分支,它是从master分支出来的,有几个额外的提交.过了一会儿,开发分支被合并回master,以创建下一个生产版本.开发人员使用开发和严格变基的主题分支.在推动之前,他们的承诺总是在最新的上游开发之上进行重新设计.这应该导致线性历史记录并且只有快进提交.

现在假设某人从master创建了一个修补程序分支并合并回master:

Master 0--------0 HF 
        \
         \
Develop   0-----0-----0-----0
Run Code Online (Sandbox Code Playgroud)

此提交现在仅合并到主分支,但开发人员需要在他们的开发分支中进行此提交,以在其更改中包含错误修复.通常你会合并master分支来开发develop分支,但考虑到我的前提条件,这是不可能的,因为它会创建一个本地合并提交.

我的问题是:如何将主分支中的新提交合并到本地开发分支中,以便开发人员的任何新更改都包含错误修复?理想情况下,我会修改我的脚本,首先将bugfix更改应用于本地开发分支(合并但没有合并提交),然后重新设置dev的提交并推送.这样,错误修复将自动添加到他们的新更改中,并将被视为这样,作为新提交的一部分,而不是单独的提交.

我一直在考虑可能的解决方案:

  • Cherry选择了对开发分支的提交.我相信,当下次开发与master合并时,这将始终导致重复提交.有没有办法解决?
  • 如此处所述进行重新定位:http://davitenio.wordpress.com/2008/09/27/git-merge-after-git-cherry-pick-avoiding-duplicate-commits/ .这可能会导致问题,因为开发分支已发布,或者不会发布?

我希望我的问题很明确.如果需要进一步澄清,请告诉我.我知道我的工作流程非常严格,但与Gerrit结合使用会非常理想.如果无法完成,那么我可能会允许合并提交......

git rebase cherry-pick gerrit git-flow

14
推荐指数
1
解决办法
8395
查看次数

git cherry-pick和git show之间有什么区别?补丁-p1?

我遇到了git cherry-pick X会有一些冲突的情况,但也创建了额外的插入(经过验证git diff).

然后我重新跑了git show X > my.patch,然后patch -p1 < my.patch在我的树上做了.我得到了更好的结果,一些冲突,但结果更清晰.

git对樱桃挑选有什么特别之处?我使用git 1.7.0.4.

编辑: 通过更清晰的结果,我的意思是结果树匹配了更多的结果git show X,而git cherry-pick包括更多的代码.

git cherry-pick

12
推荐指数
1
解决办法
7709
查看次数

git cherry-pick -x默认

在手册页中git cherry-pick:

...

-x
    When recording the commit, append a line that says "(cherry picked
    from commit …)" to the original commit message in order to indicate
    which commit this change was cherry-picked from. ...

-r
    It used to be that the command defaulted to do -x described above,
    and -r was to disable it. Now the default is not to do -x so this
    option is a no-op.

...
Run Code Online (Sandbox Code Playgroud)

是否有配置设置将本地默认设置为-x,并允许-r禁用它?我找不到一个,但我可能错过了它.

git config cherry-pick

12
推荐指数
2
解决办法
1738
查看次数

如何确定Git中的樱桃选择器的提交者?

在Git中,cherry-pick至少在没有冲突时保留原始提交的作者,时间戳等.但有没有办法确定哪些用户执行了将该提交带到新分支的樱桃选择?

git merge cherry-pick git-cherry-pick

12
推荐指数
2
解决办法
4874
查看次数