通常我会与heroku一起工作,并且在项目结束时,我有几个小的提交来修复一些意想不到的错误。这导致了10个小的差异提交,我想重新组合成一个。问题是,历史已经被推动。我如何调和这些东西?如何在多次推送后重新分配git历史记录,然后推送更新后的历史记录?
回答
你想做什么远不如人们的建议那么糟糕。确实,您不想重新推送到共享主分支的更改,重新分配发送给非共享/工作分支或非共享存储库的更改非常普遍。许多人认为这是一个更好的做法,而不是用毫无意义的(可能不完整/不可行的提交)混淆项目历史。
问问自己的问题是“任何人都会从我推动的分支中拉出来”。如果答案是否定的,那么这样做的问题只是理论上的问题,远远超过了混乱的历史问题。如果答案是肯定的,那么当然你不想这样做。但是,在这种情况下,您应该问自己,您是否可以从该存储库中的非共享分支进行部署。创建一个正在进行的测试分支,自由提交和重新绑定。当你完成你的工作时,重新分配你的内心的内容,并把这个好的承诺推到共享的分支上。
!做一个分支。 DERP。谢谢! – dougvk 2012-01-06 06:12:53
如果有人拉动我推动不同的历史,会发生什么? – 2013-02-14 02:04:26
从git-rebase
手册页:重新分组(或任何其他形式的重写)其他人基于工作的分支是一个坏主意;它下游的任何人都被迫手动修复他们的历史。
所以一般 - 在推动任何东西后不要重新定位。
在推送完成后,您不应该重写历史记录(重新分配)。如果有其他人从这个偏远地区撤离,并且你重建并推动,你会有可怕的合并冲突。
这样很糟糕吗? – 2013-02-14 02:04:47
这并不糟糕,但如果您与单个存储库中的人员进行协作,则会很困难。当然是 – tjarratt 2013-03-02 01:53:55
如果你真的要推一个衍合分支(其中Git会默认拒绝),可以使用下面的命令:
git push --force heroku master
要知道,这是在一般情况下,一个真正的坏主意,因为其他人已经提到的原因。
- 1. IE历史记录推送状态
- 2. jquery推送自定义历史记录
- 3. 强制推送后修复历史记录
- 4. 如何清理git历史记录删除某些提交后被推送?
- 5. 如何将新的(重写)历史记录推送到远程存储库中
- 6. 停止git历史记录,然后再重新组合在一起
- 7. rebase之后推出新的历史?
- 8. 更改$位置搜索防止推送到历史记录
- 9. 如何从parse.com获取推送通知历史记录? (iOS)
- 10. 简单的历史记录推碰
- 11. 如何在MySQL中保留记录更新的历史记录?
- 12. GWT历史记录:历史记号
- 13. AJAX后退按钮历史记录
- 14. 在Facebook应用程序中推送历史记录
- 15. 如何在提交后删除本地git历史记录?
- 16. Git svn clone:如何推迟修订历史记录的提取
- 17. 重组项目文件夹后丢失了git历史记录
- 18. 为什么git合并在推送合并提交后生成两个相同的更改历史记录?
- 19. Android:发送消息到历史记录
- 20. Git创建一个只包含指定目录及其历史记录的新分支,然后推送到新的存储库
- 21. 在'git合并'后保留提交历史记录
- 22. 从Git历史记录中删除具有历史记录的特定文件
- 23. 插入新的历史记录行
- 24. LDAP登录历史记录
- 25. TFS2010:将历史记录移动源,然后删除旧项目而不丢失历史记录?
- 26. 如何在SQL Server中的历史记录表中存储历史记录
- 27. 在git中保存历史记录
- 28. Git重新分配壁球历史
- 29. git记录分支头的历史记录吗?
- 30. 将历史记录插入新表
这些承诺是其他人提取/拉动?换句话说,它是一个共享的存储库,还是只有你曾经使用过的部署? – wadesworld 2012-01-03 23:14:48
@wadesworld下面的两个答案,这是一个坏主意,即使它不是共享存储库。这是一个不好的习惯,如果我发现自己认为我需要这样做,我会质疑我的前提导致我得出这样的结论。 – tjarratt 2012-01-03 23:28:25
有趣。我的问题不是常见问题吗?人们只是咬紧牙关并保持多次提交? – dougvk 2012-01-04 20:10:11