问题标签 [git-cherry]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
780 浏览

git - 在 TortoiseGit 中只看到不在另一个分支中的提交

我正在使用 TortoiseGit 1.8.3.0。我想研究在给定分支中做了哪些更改。在命令行上,我会签出这个分支并启动git cherry -v origin/master,这会给我当前分支中不在 master 中的提交列表。

我怎样才能在 TortoiseGit 中做同样的事情?我想会有一种方法来过滤日志窗口,以便它只显示这些提交......

我得到了一个指向这个 tortoisegit 错误报告的指针。这意味着我应该能够从版本 1.8.2 开始执行此操作,但我没有找到如何...

0 投票
2 回答
293 浏览

git - 查看带有描述的分支(git cherry)之间的提交?

git cherry命令非常适合查看两个分支之间发生了什么提交。但是,默认情况下,它只会为您提供提交 ID 列表 - 信息量不大。

如何获得包含更多信息的相同列表?

0 投票
1 回答
379 浏览

git - git-cherry 中的“樱桃”是什么意思?

git-cherry的樱桃这个词是什么意思?


除了水果,我只出现在樱桃采摘表达式中的词(在 git 中也存在git-cherry-pick),这意味着选择性地采摘一些东西(对吗?)。

在我看来,樱桃git-cherry的樱桃与水果无关,也与樱桃采摘无关。

我是巴西人,所以英语的微妙之处有时并不那么明显。

0 投票
2 回答
3853 浏览

git - Git:如何列出精心挑选的提交?

如何列出在 Git 中精心挑选的提交?让我们假设以下场景:cp = cherry-pick commit

是否有一个日志命令来列出cherry-pick 提交 cp1 和 cp2 ?

谢谢。

0 投票
1 回答
64 浏览

git - 当一个相同的提交在过去被挑选出来时,git cherry 将一个新的提交显示为挑选出来的

假设有两个分支 branch1 和 branch2,并且在两个分支上都有一个 test.txt,其中包含以下行“opt:true”。

将两个分支上的值从“true”更改为“false”。

在 branch1 上,将值从“false”更改为“true”并提交。

表明最新的提交不是精选到 branch2。

+ dc703edb4cf0f90fa1b5294cc5bea5c63c849229

在 branch1 上,将值从“true”更改为“false”并提交。

表明最新的提交是精心挑选的(尽管它不是挑选的),因为在 branch2 上已经有一个相同的提交。

/+ dc703edb4cf0f90fa1b5294cc5bea5c63c849229
/- 9d767893962c0dd0d957e2c038bb2ef06df2fee3

有没有办法将分支 1 上未精选到分支 2 的提交的真实列表 git?

0 投票
1 回答
76 浏览

git - 如何复制(不移动)一个 git 分支并合并到另一个

我正在尝试重新组织 GIT 存储库,其中充满了无组织的分支。现在我们想在那里建立一些结构(开发、生产、功能、......分支)并删除/压缩许多小的更改。但是需要一些东西来保持现状,因为有人在努力。

所以我创建了大结构,把旧的东西压在一起(不再对多年前的小错字修复感兴趣),并在今年开始基本上修复了所有东西。

但是现在问题来了 - 一些分支是活动的,不能被完全压扁,不能被删除/移动(直到新模式证明可以工作一段时间)并且内部包含很多小的合并,如下所示:

我想将其复制到适当的功能分支之上,例如

(架构更复杂,这是有问题的部分)

我想做类似的事情

但它会导致所有这些合并发生冲突

提交(合并)解决了I所有这些冲突,但它没有被应用并且樱桃采摘停止

最好的出路是什么(除了从一开始就组织好)?


编辑 - 添加示例:

我有

请看,分支Adam中存在冲突(3e5f111 和 897bfc3 分别添加行Adam_aAdam_b到同一个地方),开发人员 Adam 在 c04efb0 中以某种方式解决了这个问题(通过在那里写一些完全不同的东西,比如Adam_* # it does not matter左右)

我想添加新的分支develop- 这很容易master

现在我想添加带有内容的分支feature_1(over ) (但不必手动解决所有已经解决的冲突,我希望合并(4444567)与分支相同)developAdamAdam

得到这个:

(稍后我将删除Adamand master

0 投票
1 回答
1639 浏览

git - Cherry-picked 提交具有不同的哈希值

假设我这样做了,我会得到一个在但不在git log branch-A..branch-B的提交列表。我还可以通过颠倒顺序来获得提交列表,但不能获得提交列表。branch-Bbranch-Abranch-Abranch-B

几乎每个提交branch-A都被精心挑选到branch-B中,但是我注意到git log显示已被挑选的提交。特别是,我注意到精选提交的提交哈希与 inbranch-B不同branch-A。有人知道为什么会发生这种情况吗?如果是这样,如何执行差异以便它不会捕获这些误报?

0 投票
1 回答
298 浏览

git - GIT 使用 git cherry 和格式显示 master 中缺少的分支的所有提交

我想用来git cherry显示所有提交到特定分支但从主分支中丢失的提交,并使用漂亮的格式记录下来。

我试过这个:

这样做是为了:

  1. git cherry master branch_name- 在终端中逐行列出所有在 branch_name 中而不在 master 中具有代码的提交的哈希值,反之则在哈希值之前使用 + 或 - 号。

  2. grep "^+"- 只获取以 + 开头的那些(实际上从 branch_name 中缺少的那些)

  3. sed 's/^+ //'-+从行中删除,以便我们只能获得哈希。

  4. xargs -I {} git --no-pager log --pretty=format:'%h,%an,%d,%ae,%ad,%s' --date=short -1 {}- 将每个哈希作为参数传递给 git log 以显示每个哈希的格式化日志。这里--no-pager的意思是退出 git log 窗口并-1只显示 1 次提交。

这样做的问题在于,它开始将 git cherry 返回的每个散列的每个结果连接在同一行。它不会逐行执行,因此我可以复制粘贴它们,也可以使用 .csv 文件将它们保存到 csv 文件中... > tmp.csv

不确定是否还有其他我可以使用的东西,xargs或者这实际上是 git log 的问题,这不起作用。

我错过了什么?我做错了什么?

谢谢大家,很抱歉成为菜鸟。

0 投票
2 回答
345 浏览

git - 如何使用 git cherry 获取提交者电子邮件?

git cherry优于git log获取两个分支之间的差异。问题是它的输出是有限的。

我正在尝试提取与提交关联的电子邮件地址(或用户)。这就是我正在做的事情。

我得到的只是一次提交的详细信息。而不是我所做的每一次提交:

第二个管道操作出了点问题。

我的问题是:如何使用 git cherry 获取提交者电子邮件?

0 投票
1 回答
912 浏览

git - “git cherry”将一个已经挑选好的提交显示为“准备应用”

我一直在研究分支align,想从中挑选一些提交到master. 我git cherry用来寻找候选提交:

我的理解是 '+' 表示在master. 但我记得已经挑选了这个承诺master。事实上,这是rw-fwd.h对分支文件的最新更改align

并且仍然是分支上 rw-fwd.h 的最新更改master

状态文档git cherry:“等效测试基于差异,在删除空格和行号之后。git-cherry 因此检测提交何时通过 git-cherry-pick[1]、git-am[ 1] 或 git-rebase [1]。” 从视觉上看,使用git show,提交看起来是一样的,但让我们绝对确定:

补丁 ID 是相同的。为什么git cherry没有检测到这个提交已经被挑选出来了?

编辑:下面是经过消毒的git log --oneline --decorate --graph。 我添加这个是为了回应@torek 的答案,不是因为我怀疑答案是否正确,而是因为我会根据该答案在解释真正的提交日志方面提供一些帮助。

master位于 a52f43e(第一行)和align9ffa94e(第三行)。 align是图上最右边的线,一直向下,并且不合并。

查看上面日志的底部,c2bbb3d 是对 的初始提交align,5bc790b 是对master. 67154d6 我期望是共同的祖先,那是输出git cherry停止的地方。

我仍然无法回答的问题是,我怎样才能获得align尚未提交的提交列表master?似乎任何从 可到达align但不是从的提交master都是候选者,只要它还没有被挑选到master。任何馈入的分支master都必须检查樱桃挑选 - 包括图中除了最右边的每个分支,align.

注意:我们已经使用 git 几个月了,所以我很确定我们正在做的大部分事情都不是最佳实践。我们从反复试验中学到了很多东西。