Git Cherry pick仅提交涉及特定文件的文件

Git Cherry pick仅提交涉及特定文件的文件,git,git-cherry-pick,Git,Git Cherry Pick,什么是一种简洁的方式来请求“仅从另一个分支中挑选与特定文件相关的提交”?i、 e.命令git log..other branch afile给出了触摸“afile”的其他分支中未合并提交的列表;如何请求在当前分支上重播这组相同的提交?git cherry pick$(git log--reverse--pretty=format:“%H”filename) 我们应该做到这一点git log--reverse--pretty=format:“%H”filename基本上为您提供了一个以换行符分隔的

什么是一种简洁的方式来请求“仅从另一个分支中挑选与特定文件相关的提交”?i、 e.命令
git log..other branch afile
给出了触摸“afile”的其他分支中未合并提交的列表;如何请求在当前分支上重播这组相同的提交?

git cherry pick$(git log--reverse--pretty=format:“%H”filename)

我们应该做到这一点
git log--reverse--pretty=format:“%H”filename
基本上为您提供了一个以换行符分隔的SHA列表,其中包含按相反顺序修改的
filename
,以便提交按正确顺序合并。然后我们将列表提供给git cherry pick


git cherry pick$(git rev list--reverse HEAD--filename)
是Magnus Bäck提供的上述命令的另一个版本。

您不能只合并到最近一次涉及相关文件的提交中吗?@watson我不能这样做,因为这也会合并到许多我不想合并的提交中。我只想从涉及一个文件的提交的一小部分中提取更改。我认为您不可能想要什么,您要么只需要获取一个文件,从更改该文件的最新提交的所有内容,或者从最新提交的文件中抓取一些您认为相关的文件。您是否还希望仅从该提交中实际触及相关文件的更改?应用整个提交即可。选择要应用的提交列表非常重要。(事实上,将命令行上的sha1作为参数复制粘贴到
git cherry pick
可以完成任务。但必须有更好的方法。)“然后sed用空格替换所有\n(换行符)——您不需要这样做。只要IFS有它的默认值,换行符和空格在无引号的$(…)扩展中的行为都是相同的。我最终使用了这样的构造—我仍然想知道是否有一种方法不涉及bash命令插值。我想这不是一个足够普遍的需求……没有sed部分,我从来没有尝试过,也没有测试用例,所以我不想发布一些我以前没有测试过的东西。@gcbenison:这对我来说并不是非常普遍,但更重要的是,因为它是用现有的构建块完成的,所以我不明白为什么它应该是一个特殊的命令(或通过对现有命令的特殊用途选项完成)。出于脚本编写目的,您更喜欢
git rev list
而不是
git log
。此外,您可能希望
--reverse
以正确的顺序应用cherry pick,不是吗?我们最终会得到:
git cherry pick$(git rev list--reverse HEAD--filename)