在推入后,不能在git中压缩提交

我正在使用git开发一个项目(没有队友,只有我)。 我一直在做提交,合并,并将它们推送到远程(所有这些都希望我学会了如何重新绑定并修复历史),现在我想重新设置已经在远程的所有更改(只有1个主分支只有1个用户),通过rebase我的意思是我想压扁并重命名一些提交。

我正在使用他们在这个链接中建议的命令...如何压扁git提交后提交? ,但问题是我得到一些错误,我不明白他们,这里是显示问题的屏幕截图:

图像 -  git cmd重新定位错误

图像 - 视觉历史树的一部分

===========================错误作为文本==================== ============

使用的命令:

git rebase -i origin/master~2 master

(它应该只显示2个提交,但由于某种原因它显示了超过2个,如40+)

错误信息:

interactive rebase in progress; onto 9bdd944
Last commands done (15 commands done):
   pick 7af3656 "commit message"
   pick 7355eff "another commit message"
Next commands to do (110 remaining commands):
   pick fc10330 "another commit message"
   pick f22d8c0 "another commit message"
You are currently rebasing branch 'master' on '9bdd944'.

nothing to commit, working tree clean
The previous cherry-pick is now empty, possibly due to conflict resolution.
If you wish to commit it anyways, use:

   git commit --allow-empty

Otherwise, please use 'git reset'
Could not apply 7355eff... "another commit message"

===========================错误作为文本==================== ============

它看起来像一团糟,任何帮助我解决这个问题的提示将不胜感激,我是新的使用Git,我敢打赌,这对一些高级用户来说很容易。


你可以轻松做到这一点的另一种方法是发布:

git reset -soft d0b8a84d
git commit -m "squashed everything after d0b8a84d"
git push -f

这将首先将历史记录重置为提及的提交以及基本上“撤消”的所有更改,但它们仍保存在暂存区域中。

然后,您立即使用新的提交提交所有这些更改。

然后你把它们推回到你的遥控器。 由于您正在重写已发布的历史记录,因此需要一支部队。


Git rebase也可以完成,但是如果你想要做的只是将所有提交后的某个点压缩到一个提交中,上述操作就容易得多。 在合并的情况下,rebase会提取所有提交,这可能会让事情变得困难。

如果您想要结合特定的提交或更改旧提交的提交消息等,交互式重新分配功能会更强大。但在您的情况下,上述方法非常容易。

链接地址: http://www.djcxy.com/p/49045.html

上一篇: Can't squash commits in git after they have been pushed

下一篇: git rebase interactive already pushed commits