我如何在几次推送之后重新定位git的历史记录,然后推送更新的历史记录



我经常使用heroku,在项目快结束时,我有几个小的提交来修复一些意想不到的bug。这导致了10个小的差异提交,我希望将它们重设为一个。问题是,历史已经被推了。我如何调和这些东西?

你想做的事情远没有人们建议的那么糟糕。的确,您不希望将更改更改推送到共享主分支,但将更改更改发送到非共享/工作分支或非共享存储库是非常常见的。许多人认为这是一种更好的实践,而不是用无意义的(可能不完整/不工作的)提交来混淆项目历史。

要问自己的问题是"会有人从我推的树枝上拉下来吗?"如果答案是否定的,那么这样做的问题只是理论上的,远远超过了混乱历史的问题。如果答案是肯定的,那么你当然不想这么做。但是,在这种情况下,您应该问自己是否可以从该存储库中的非共享分支进行部署。创建一个正在进行的测试分支,自由地提交和重组。当你完成了你的工作,重新调整你的基础,把好的提交推到共享的分支。

如果你真的想要推送一个重基分支(Git默认会拒绝),你可以使用以下命令:

git push --force heroku master

请注意,由于其他人已经提到的原因,这通常是一个非常糟糕的主意。

您不应该在已经推送之后重写历史(rebase)。如果其他人从远程提取,而你重新base并推送,你将会有非常可怕的合并冲突。

From git-rebase man-page:重基(或任何其他形式的重写)其他人已经基于工作的分支是一个坏主意;任何下游用户都必须手动修复他们的历史记录。

所以一般来说-不要在你推了任何东西之后重新定位

最新更新