标签: cherry-pick

樱桃挑选Git意味着什么?

最近,我被要求cherry-pick提交.

那么,在git中挑选一个提交意味着什么呢?你怎么做呢?

git cherry-pick git-cherry-pick

2117
推荐指数
11
解决办法
101万
查看次数

如何樱桃挑选多个提交

我有两个分支.提交a是一个头,而其他有b,c,d,ef之上a.我想移动c,d,ef第一支没有提交b.使用樱桃挑选很容易:结帐第一个分支樱桃 - 一个接一个c地挑选f第二个分支到第一个.但有没有办法挑选所有c- f一个命令?

这是场景的直观描述(感谢JJD):

在此输入图像描述

git git-rebase cherry-pick

779
推荐指数
11
解决办法
39万
查看次数

是否有可能从另一个git存储库中挑选一个提交?

我正在使用一个git存储库,需要从另一个不知道第一个存储库的git存储库提交.

通常我会HEAD@{x}在reflog中使用它来挑选,但因为.git它对这个reflog条目(不同的物理目录)一无所知,我怎么能挑选这个,或者我可以吗?

我正在使用git-svn.我的第一个分支使用git-svntrunk一个颠覆回购,而下一个分支是在git-svn上一个Subversion分支.

git cherry-pick

676
推荐指数
10
解决办法
21万
查看次数

如何git-cherry-pick仅更改某些文件?

如果我想要合并到Git分支中,那么只对某个特定提交中更改的某些文件进行了更改,其中包括对多个文件的更改,如何实现?

假设git的承诺称为stuff具有对文件的改变A,B,C,和D,但我想只合并stuff的对文件的更改AB.这听起来像是一项工作,git cherry-pickcherry-pick只知道如何合并整个提交,而不是文件的子集.

git github cherry-pick

525
推荐指数
12
解决办法
20万
查看次数

git cherry-pick说"...... 38c74d是合并但没有给出-m选项"

我在我的主分支中做了一些更改,并希望将这些更改带到上游.当我樱桃挑选以下提交但是我被卡在fd9f578上,其中git说:

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

git试图告诉我什么是樱桃挑选正确的东西在这里使用?主分支确实包含对上游分支中已修改的文件的更改,因此我确信会出现一些合并冲突,但这些并不是很难理解.我知道哪些地方需要改变.

这些是我想要上传的提交.

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 'master' of ssh://extgit/git/sessions_common
4172caa cleaned up comments in sessions.c ...
Run Code Online (Sandbox Code Playgroud)

git merge rebase cherry-pick

462
推荐指数
5
解决办法
26万
查看次数

Git分支模型适合您?

我们公司目前正在使用简单的主干/发布/修补程序分支模型,并希望了解哪些分支模型最适合您的公司或开发过程.

  1. 工作流程/分支模型

    以下是我所看到的三个主要描述,但它们彼此部分相互矛盾,或者不足以解决我们遇到的后续问题(如下所述).因此,我们的团队到目前为止默认不是那么好的解决方案.你做得更好吗?

  2. 合并与变基(纠结与连续历史)

    是应该pull --rebase还是等待合并回到主线直到你的任务完成?我个人倾向于合并,因为这保留了一个任务开始和完成的基础的视觉图示,我甚至更喜欢merge --no-ff这个目的.然而,它有其他缺点.还有许多人没有意识到合并的有用属性 - 它不是可交换的(将主题分支合并到master中并不意味着将master合并到主题分支中).

  3. 我正在寻找一个自然的工作流程

    有时会发生错误,因为我们的程序无法通过简单的规则捕获特定情况.例如,早期版本所需的修复当然应该足够下游,以便可以将上游合并到所有必要的分支中(这些术语的使用是否足够清楚?).然而,在开发人员意识到它应该被放置在更下游之前,并且如果已经推送(更糟糕的是,合并或基于它的某些东西)之后,修复使其成为主人,那么剩下的选项就是挑选,其相关的危险.您使用了哪些简单的规则?同样在这包括一个主题分支的尴尬必然排除其他主题分支(假设它们从共同基线分支).开发人员不希望完成一个功能来启动另一个功能,感觉就像他们刚写的代码不再存在

  4. 如何避免创建合并冲突(由于挑选)?

    创建合并冲突的可靠方法似乎是在分支机构之间进行挑选,它们永远不会再次合并?在任一分支中应用相同的提交(如何执行此操作?)可能会解决这种情况?这是我不敢推动基于合并的工作流程的一个原因.

  5. 如何分解成外用分支?

    我们意识到从主题分支组装完成的集成是很棒的,但是我们的开发人员经常工作没有明确定义(有时像"戳"一样简单),如果某些代码已经进入"misc"主题,根据上面的问题,它不能再被带出去了吗?您如何使用定义/批准/毕业/发布您的主题分支?

  6. 代码审查和毕业等适当的程序当然是可爱的.

    但是我们根本无法保持足够的东西来管理这个 - 任何建议?整合分支,插图?

以下是相关问题列表:

还要看看Plastic SCM在任务驱动开发上写的内容,如果不是Plastic的选择,请研究nvie的分支模型及其支持脚本.

git merge workflow release cherry-pick

371
推荐指数
3
解决办法
6万
查看次数

Git Cherry-pick vs Merge Workflow

假设我是回购的维护者,并且我想从贡献者那里获取更改,那么有一些可能的工作流程:

  1. cherry-pick每个都从远程提交(按顺序).在这种情况下,git将提交记录为与远程分支无关.
  2. merge是分支,拉入所有更改,并添加新的"冲突"提交(如果需要).
  3. merge各自从远程分支单独提交(再次按顺序),允许为每个提交记录冲突,而不是将所有冲突组合为一个.
  4. 为了完整性,你可以做一个rebase(与cherry-pick选项相同?),但我的理解是,这可能会导致贡献者的混淆.也许这消除了选项1.

在情况2和3中,git记录了提交的分支历史记录,与1不同.

使用任何一种方法cherry-pickmerge描述的方法之间有什么优点和缺点?我的理解是方法2是常态,但我觉得用单个"冲突"合并解决大型提交并不是最干净的解决方案.

git merge cherry-pick

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

删除特定提交

我和一位朋友在一个项目上合作,他编辑了一堆本不应该编辑过的文件.不知怎的,我将他的作品合并到了我的作品中,或者当我拉动它时,或者当我试图选择我想要的特定文件时.我一直在寻找和玩很长一段时间,试图弄清楚如何删除包含对这些文件的编辑的提交,它似乎是revert和rebase之间的折腾,并没有简单的例子,并且docs假设我比我知道的更多.

所以这是问题的简化版本:

鉴于以下情况,如何删除提交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

$ echo "line 2" >> myfile

$ git commit -am "commit 2"
[master 342f9bb] commit 2
 1 files changed, 1 insertions(+), 0 deletions(-)

$ echo "line 3" >> myfile

$ …
Run Code Online (Sandbox Code Playgroud)

git commit revert cherry-pick

260
推荐指数
7
解决办法
27万
查看次数

樱桃挑选工作后git如何合并?

让我们假设我们有一个master分支.

然后我们创建一个 newbranch

git checkout -b newbranch
Run Code Online (Sandbox Code Playgroud)

和两个新提交到newbranch:commit1commit2

然后我们切换到master并制作 cherry-pick

git checkout master
git cherry-pick hash_of_commit1
Run Code Online (Sandbox Code Playgroud)

展望gitk我们看到commit1和樱桃采摘的版本有不同的哈希值,所以在技术上它们是两个不同的提交.

最后我们合并newbranchmaster:

git merge newbranch
Run Code Online (Sandbox Code Playgroud)

并且看到这两个具有不同哈希值的提交合并没有问题,尽管它们暗示应该应用相同的更改两次,因此其中一个应该失败.

git是否真的对提交的内容进行了智能分析,同时合并并确定更改不应该应用两次,或者这些提交在内部标记为链接在一起?

git git-merge cherry-pick

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

如何从1个分支到另一个分支

我有2个分支,masterdev.

我在dev分公司,我想摘樱桃1从承诺masterdev.所以我做了

$ git cherry-pick be530cec7748e037c665bd5a585e6d9ce11bc8ad
Finished one cherry-pick.
Run Code Online (Sandbox Code Playgroud)

但是,当我做的git statusgitx,我没有看到我的承诺be530cec7748e037c665bd5a585e6d9ce11bc8ad在git的历史.

我怎样才能在dev分支中看到我的提交?

git cherry-pick git-cherry-pick

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