我在 Github 上 fork/clone apache whirr,并开始在主干分支上工作。在工作期间,我从 origin/trunk 中提取了两个提交。当我通过运行 git diff first_feature_commit HEAD 生成补丁时,我得到一个包含这两个提交的补丁。因此,当我提交补丁时,该补丁被拒绝了。
如何在没有从源/主干中提取的提交的情况下创建补丁?
我在 Github 上 fork/clone apache whirr,并开始在主干分支上工作。在工作期间,我从 origin/trunk 中提取了两个提交。当我通过运行 git diff first_feature_commit HEAD 生成补丁时,我得到一个包含这两个提交的补丁。因此,当我提交补丁时,该补丁被拒绝了。
如何在没有从源/主干中提取的提交的情况下创建补丁?
1)将远程添加到您有兴趣修补的存储库。大概是这样的
git remote add upstream https://github.com/apache/whirr.git
2)取遥控器。只需获得所有这些可能:
git fetch --all
3)制作你的补丁!
git diff upstream/trunk..HEAD >my.patch
!@eldondev
当您只想获取那些在您的主分支中而不是在origin/master
(服务器)上的提交时,您可以使用
git diff origin/master..HEAD
有关详细信息,请参阅Git 工具 - Pro Git 的修订选择。
使用生成补丁git format-patch
,它将拆分它们。你也可以只用你的 diffgit diff HEAD^
来获得你的提交(这可能是最近的一个)。
git checkout -b rj/rilly_feature
git rebase -i master
# remove spurious commits in interactive rebase file
git diff master
# observe success
这是为了解决你创建功能分支的“失败”——如果你认为你应该从一个功能分支工作,这将使你得到一个并允许你生成一个干净的补丁。