如何在git中提交当前头之间的差异?

ska*_*lee 4 git git-diff git-merge

我正在参与我参与的项目的一些主题分支.我通常在提出拉取请求之前重新分支我的分支.然而,这一次,由于主人的变化,变基是一个很大的痛苦.很多冲突,更糟糕的是,在手动合并提交之后看起来只是丑陋而且松散了他们的观点.我肯定更喜欢在我的分支头和两个分支上的最新提交之间获得差异,然后将这个差异应用于主人的头部,最后创建全新的闪亮提交git add -p.所以我的问题是:如何实现它?一种可能性是简单地将master合并到我的主题分支中,但是有更优雅的解决方案吗?我相信是的.

谢谢你的帮助.

编辑:

一个文件已在主分支上移动,我的提交正在改变此文件(使用它的旧名称).

Chr*_*röm 10

使用 git cherry-pick --no-commit <commit>...

然后,您将获得在您的分支顶部应用的列出的提交中的所有更改,您可以在闲暇时提交.


Wil*_*ard 5

当您想要获取连续提交时,已经给出答案很好。

但是,如果您想要的是在任何两个选定提交之间应用差异的方法的一般答案(就像我在找到此页面时所做的那样),那么它就没有那么有用了。

就我而言,我执行了以下操作:

为了让名字的东西,比方说,我想从应用差异commit1,以commit2branch1作为一个单一的提交。

请注意,commit1可能是 的祖先“后代” commit2,或者两者都不是。

所以我这样做:

git status     # Ensure working directory is clean, preferably no untracked files
git checkout -b temp-branch commit2
git reset --soft commit1
git commit -m "Everything from commit1 to commit2 as one commit"
git checkout branch1
git cherry-pick temp-branch
    # Confirm result is what you expect
git branch -D temp-branch
Run Code Online (Sandbox Code Playgroud)