序
- 开发过一个小项目,第二周发现开发模式不大对,然后从第一周搭好框架的地方建了子分支dev,在dev上正八经开发,master也没管过,从分支的位置开始的master(第二周)的内容就没用了。
- 这次要迁移仓库,正好搞一下,把master多出来的那些删了,然后把子分支dev合并过去,
- 利用git base & gitkraken结合使用
原始结构如下
- 分支处
- dev 分支
- master 分支
步骤
前边几步都是基于本地仓库操作,最后push到远程即可(会把本地修改后的分支结构push上去,我这里是需要换新的仓库,如果还是老仓库,push的时候会提示警告,要选择强制push)
- 这是目前的分支结构
master -- master(m条提交:a b c d e f... m) -- dev(n条提交:1 2 3 4 5 6 7 ... n) //字母和数字代表提交内容,以上说明master和dev的内容不一样
- 一:将本地代码恢复到分支时的那次提交,
discard all changes
的意思是取消所有的更改,即忽略 执行这次操作前后(即恢复前的代码和即将恢复的这次提交所包含的代码)的 代码之间的差异
- 此时本地的分支结构其实就变成了:
master -- master(0条提交) -- dev(n条提交:1 2 3 4 5 6 7 ...n) //字母和数字代表提交内容
- 二:在项目目录下,合并dev分支到master
# 切换到master分支,在GitKraken直接双击左边的master即可切换 $ git checkout master # 开始合并 $ git merge dev
- 此时本地的分支结构变成了:
master -- master(n条提交:1 2 3 4 5 6 7 ...) -- dev(n条提交:1 2 3 4 5 6 7 ...) //此时dev分支上的内容已经合并到了master上,两个分支内容完全一致,在gitkraken中也显示在一个节点上。
- 查看gitkraken,明确地看到两个分支处于一个节点。(合并之后子分支并不会自动删除,因为实际的分支应用中,子分支是在完成一个功能后合并到主分支,但是子分支可能还会继续开发其他功能。但是这里我是不会再用这个分支了,所以等会我会删除)
- 电脑图标是本地的意思,狙击图标是远程的意思。master的远程仓库的节点还是在原先的位置
- 电脑图标是本地的意思,狙击图标是远程的意思。master的远程仓库的节点还是在原先的位置
- 三:选择性删除。dev分支我已经用不到了,这里我就直接删除啦。不能在当前分支删除本分支,所以切换到master删除dev
- 此时本地的分支结构变成了:
master -- master(n条提交:1 2 3 4 5 6 7 ...)
- 四:最后,更换远程地址。最最后,push到远程。我是在gitkraken里push的,很简单,就不贴图啦
- 如果最后本地的gitkraken还显示有旧分支,那么删掉本地代码重新拉取一次即可啦
😁欢迎加入QQ群交流: [游戏-Web-开发技术栈 ☄️] '300567032’
点击下方图标一键加入!