Git - 我觉得超好用的点

项目有很大的变化的情况下,怎么处理

如果一个Git管理版本的项目需要做一些很大的改动,例如重写,另起炉灶,怎么将新的项目合并到老的项目,不改变git仓库的地址?

例如,一个基于PHP框架Laravel的项目,之前是5.0版本,现在升级到5.4版本,框架的许多地方都改变了,与其在原项目中修改,不如直接另起一个项目,替换掉原来的master分支即可。

新建目录,初始化Laravel5.4,将原来的代码拷贝进Laravel的目录,然后”git init“初始化为git目录,添加远程仓库地址:”git remote add origin git_remote_address“,这时你想要推送到远程仓库,必须先同步远程仓库,由于执行过”git init“,本地默认为master分支,因此我们需要同步远程master分支状态:”git pull origin master“,这时会遇到问题:

fatal: refusing to merge unrelated histories

这是因为git默认不允许两个完全不相干的项目合并,而我们就是要合并,因此我们来强制合并:

git pull origin master --allow-unrelated-histories

这里有个事情要注意,合并时会遇到冲突,我们需要采用本地的更改,因为本地的更改是我们想要的:

git pull origin master --allow-unrelated-histories -X ours

至此,大功告成,这里需要注意的有两点:

  1. "--allow-unrelated-histories"用于合并两个完全不相干的分支,不相干是指历史完全不同;
  2. "-X ours/theirs"用于在合并过程中指定使用哪方更改,否则,在有大量更改时手动处理冲突,可是一件麻烦事。

合并某开发分支到主分支,不想有太多的commit

git merge有个参数:`--squash`,它可以将待合并分支的所有commit合并为一个commit,执行这个git merge之后,要执行一个git commit,可以修改提交信息,通常,所有的提交信息会默认在总的提交信息中。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值