解决git代码覆盖问题
场景:dev分支比master新,然后合并master的时候把dev覆盖了
解决方案:
步骤1、复制dev的旧版本commit id拉取一个新的分支dev-A
命令行:
git checkout (目标分支)
git checkout -b new_branch_name history_commit_id
eg:
git checkout dev
git checkout -b dev-A 123412323
步骤2、复制master的旧版本commit id拉取一个新的分支master-A
命令行:
git checkout (目标分支)
git checkout -b new_branch_name history_commit_id
eg:
git checkout master
git checkout -b master-A 123412323
步骤3、把dev-A分支代码合并到master-A分支
命令行:
git checkout master-A
git merge dev-A
解决代码合并冲突,提交
步骤4、把原本从master拉取的特性分支feature-A合并到master-A
命令行:
git checkout master-A
git merge feature-A
解决代码合并冲突,提交
步骤5、检测master-A代码是否齐全,如果齐全就可以合并到master
步骤6、清楚dev commit id 版本之前的提交记录,然后再吧master-A合并到dev
命令行:
(1)git checkout dev
git log // 查看提交记录
(2)git reset --hard xxxx(commit id) // 回退到指定版本
(3)git push -f origin (branch name)
(4)git merge master-A
步骤6也可以改为:
在完成步骤5之后的最新master分支拉取一个分支充当dev,然后删除原本的dev分支,但是这样做会导致旧dev之前的提交记录都被清空了,如若之后出现问题,无法找到记录
总结:接手一个新的项目,要先看清分支提交记录,最好master、dev都看下
浙公网安备 33010602011771号