民间,
我想在推送到github之前将我的分支中的几个提交合并为一个。分支名称为mybranch
。
如果我没有误会,以下命令应该为我提供压缩提交的选项。
git rebase -i mybranch
我不认为它确实有效...它只是说
noop
# Rebase 39e50c2..39e50c2 onto 39e50c2
#
# Commands:
# p, pick = use commit
...
我做错了什么?
由于
答案 0 :(得分:2)
您实际上无法合并提交停留在一个分支上。但您可以使用以下步骤完成它:
# reset all changes after commit that already is pushed to remote repo
# option --soft will save all the changes in stage area
git reset --soft origin/mybranch
# here all you changes is in stage area so you can commit
git commit -m "squashed commit"
git push
为了更好地理解命令git reset的格式:
git reset <mode> <commit>
模式--soft
:
- soft根本不触摸索引文件或工作树(但是将头重置为,就像所有模式一样)。这留下了所有 你改变的文件“要提交的更改”,就像git status所说的那样 它
和origin/mybranch
指向上次推送到原始提交。
如果您的mybranch
是本地分支(即未被推送到远程),您可能会重置为它偏离的分支。
答案 1 :(得分:1)
Rebase在提交图中将提交从一个地方移动到另一个地方,因此您无法将分支重新绑定到自身,因为这将是一个noop - 就像消息所说的那样。相反,在mybranch上,你可能想要做的是改变它分支的分支。例如,如果它与master不同,则需要
git rebase -i master
查看&#34;功能/修正分支工作流程&#34;在我的备忘单上获取更多信息http://philipdaniels.com/gitcheatsheet/
特别是,如果其他人正在推动对您的回购的更改,那么理解为什么建议重新定位到origin / master(步骤7)是一个好主意:它会强制您解决当时的任何合并冲突