1.通过变基
冲突原因:当两个同事都拉下了主分支的代码,如下图都是三个圈,同事1更新了一个功能并且功能上线,与主分支合并,此时主分支如下图多了一个三角形,当同事b的功能完成先要去上线的时候,在要与主分支合并的时候,发现没法合并,这是就要用到变基解决这个冲突了
首先先同事2在master分支下git pull 一下 ,获得新的master分支,此时就有了三角形,要变基一下三角形与正方形是否有冲突,然后git rebase master
然后手动解决冲突,解决完成之后git add .【一定不要git commit】 git rebase --continue 继续变基 git rebase --skip 跳过此次变基,尽量不要用 冲突处理错了返回用 git rebase --abort 返回修改冲突前之后 git status 看下当前状态没啥问题,就执行git push origin 名字 这时候会提示你进行强推 git push origin 名字 -f
先pull是为了把本地分支更新成与远程主分支一样,变基是为了把本地b分支的功能变成与本地主分支一样,然后本地b分支在推到远程b分支,远程b分支在合并到远程主分支
提交冲突
主要是解决两个人操作同一个分支,另一个人该改过的该分支提交完成后,另一个人在提交的时候就会冲突了
如下图,刚开始主分支只有一个星星,a,b两个同学都拉下来开始些功能,b同学写了一个十字架提交上去,当a同学再提交的时候就会冲突,因为当时a同学拉的时候并没有十字架,所以a同学就需要先把白云功能git stash 放在贮藏区藏起来,在进行 git pull ,此时a同学就变成了星星十字架,然后再把白云功能通过git stash apply 从贮藏区放出来,然后如果有冲突手动解决冲突,在进行提交就可以了
3.修改线上bug
git
1.git checkout --index.html 回滚到没有修改工作区的状态
2.git reset HEAD index.html 当你修改完工作区,并且git add.存到缓存区后,这个命令可以让你的版本从缓存区变成还没有提交到暂存区之前,在通过git checkout --index.html ,回到修改工作区代码之前
3.分支,首先要开发新功能,创建了一个dev分支,并通过git checkout dev 切换到dev分支进行开发商城的新功能,【注意在dev分支改变代码不会影响到C3主分支的】在开发新功能C4的时候master出现了bug,这时候先要把之前写的商城新功能进行提交,git add . ,git comint -m 'C4',此时dev分支上有一个C4版本,此时主分支还没有,
,然后就在C3上创建了一个分支bug,git branch bug ,创建分支,然后通过切换到bug,分支进行修复bug,修复完成后,进行git add. 和git commit -m 'C5'进行在bug分支形成C5版本 ,然后回到git checkout master 回到主分支,通过git merge bug,bug合并到主分支,产生C5的主分支,此时bug分支没用了,通过git branch -d bug 把bug 分支删除,此时修复完bug,再切换到dev分支进行商城新功能的开发,切换回来的bug还没有修复,因为是从C3分出来的分支,当开发完成后,git add .,git commit -m 'C6',在dev分支里面创建已经开发完成的C6版本,此时在dev分支上有,C1,C2,C3,C4,C6,几个版本了,接下来就要把dev分支合并到master分支了,此时会报一个错,此时会产生一个冲突 ,因为主分支已经产生修复bug的C5了,而商城是通过C3来写的,此时进行手动修改冲突,【也可能不会产生冲突,就是你在修改bug的时候别没有修改C3的代码,只是添加了代码】然后再进行提交,add,commit 在主分支生成一个C7的版本,此时C7就解决了bug也完成了商城新功能