我有一个现有的laravel项目,它使用旧版本的Laravel 5.1。我想升级我的项目以使用Laravel 5.1.2。
我遵循了this教程。所以我将laravel/laravel
github存储库作为远程调用laravel
添加到我的git项目中,然后获取它,然后使用framework
创建了一个名为laravel/master
的新本地分支作为远程
然后我切换回develop
分支,运行git merge framework
并解决所有冲突,然后我运行了git commit -m "Upgrade to Laravel 5.1.2" && git push
现在出现了问题,在我推动之后,我注意到我的develop
分支从laravel / laravel项目获得全部提交(超过4000),我真的不想乱扔垃圾我的git日志。有没有办法不必添加框架中的所有提交,但只有#34;升级到Laravel 5.1.2"信息?之后可以解决这个问题吗?
编辑:
好的,我设法修复了我当前的提交历史记录:
git reset --soft HEAD~1
git commit -am "...."
git push --force
但是我不知道它是如何神奇地修复它的,以后如何在合并大型远程存储库时避免乱丢我的提交历史记录
答案 0 :(得分:2)
当您执行git reset --soft HEAD~1
时,您“向后移动”提交,同时保持您的工作目录和索引相同。因此,当您提交时,文件已更改,就像您已完成合并一样,而不进行实际合并;即,你的提交只有一个父母。我不确定这是否是我推荐的东西,因为当你再次合并时,git将不知道你上次合并的时间,这可能会导致问题。但是,如果您希望将来再次“合并”而不实际合并(即您不希望分支的历史记录“合并”),请将--squash
选项传递给git merge
。这将带来变化,但不会带来历史。