我正在参与我参与的项目的某个主题分支。我通常在提出拉取请求之前重新分支我的分支。然而,这一次,由于主人的变化,变基是一个很大的痛苦。许多冲突,更糟糕的是,在手动合并提交之后,看起来只是丑陋而且松散了他们的观点。我肯定更愿意在我的分支头和两个分支上的最新提交之间获得差异,然后将这个差异应用于master的头部,最后使用git add -p
创建全新的闪亮提交。所以我的问题是:如何实现它?一种可能性是简单地将master合并到我的主题分支中,但是有更优雅的解决方案吗?我相信是的。
感谢您的帮助。
修改:
一个文件已在主分支上移动,我的提交正在改变此文件(使用它的旧名称)。
答案 0 :(得分:8)
使用git cherry-pick --no-commit <commit>...
然后,您将获得在您的分支顶部应用的列出的提交中的所有更改,您可以在闲暇时提交。
答案 1 :(得分:1)
当你想要抓住连续提交时,answer already given很好。
但是,如果您想要的是一般答案,以便在任何两个选定的提交之间应用差异(就像我在找到此页面时所做的那样),那么它就不那么有用了。 / p>
就我而言,我做了以下事情:
为了给事物命名,假设我想将commit1
到commit2
的差异应用到branch1
作为单个提交。
请注意,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