2012-01-03 72 views
3

通常我会与heroku一起工作,并且在项目结束时,我有几个小的提交来修复一些意想不到的错误。这导致了10个小的差异提交,我想重新组合成一个。问题是,历史已经被推动。我如何调和这些东西?如何在多次推送后重新分配git历史记录,然后推送更新后的历史记录?

+0

这些承诺是其他人提取/拉动?换句话说,它是一个共享的存储库,还是只有你曾经使用过的部署? – wadesworld 2012-01-03 23:14:48

+0

@wadesworld下面的两个答案,这是一个坏主意,即使它不是共享存储库。这是一个不好的习惯,如果我发现自己认为我需要这样做,我会质疑我的前提导致我得出这样的结论。 – tjarratt 2012-01-03 23:28:25

+0

有趣。我的问题不是常见问题吗?人们只是咬紧牙关并保持多次提交? – dougvk 2012-01-04 20:10:11

回答

5

你想做什么远不如人们的建议那么糟糕。确实,您不想重新推送到共享主分支的更改,重新分配发送给非共享/工作分支或非共享存储库的更改非常普遍。许多人认为这是一个更好的做法,而不是用毫无意义的(可能不完整/不可行的提交)混淆项目历史。

问问自己的问题是“任何人都会从我推动的分支中拉出来”。如果答案是否定的,那么这样做的问题只是理论上的问题,远远超过了混乱的历史问题。如果答案是肯定的,那么当然你不想这样做。但是,在这种情况下,您应该问自己,您是否可以从该存储库中的非共享分支进行部署。创建一个正在进行的测试分支,自由提交和重新绑定。当你完成你的工作时,重新分配你的内心的内容,并把这个好的承诺推到共享的分支上。

+0

!做一个分支。 DERP。谢谢! – dougvk 2012-01-06 06:12:53

+0

如果有人拉动我推动不同的历史,会发生什么? – 2013-02-14 02:04:26

0

git-rebase手册页:重新分组(或任何其他形式的重写)其他人基于工作的分支是一个坏主意;它下游的任何人都被迫手动修复他们的历史。

所以一般 - 在推动任何东西后不要重新定位。

2

在推送完成后,您不应该重写历史记录(重新分配)。如果有其他人从这个偏远地区撤离,并且你重建并推动,你会有可怕的合并冲突。

+0

这样很糟糕吗? – 2013-02-14 02:04:47

+1

这并不糟糕,但如果您与单个存储库中的人员进行协作,则会很困难。当然是 – tjarratt 2013-03-02 01:53:55

4

如果你真的要推一个衍合分支(其中Git会默认拒绝),可以使用下面的命令:

git push --force heroku master 

要知道,这是在一般情况下,一个真正的坏主意,因为其他人已经提到的原因。

相关问题