1、A自己开发一个分支
a)我们git pull拉去远程分支,并自动切换相应工作分支,比如feature;然后我们修改文件,不要commit
image.png b)保证远程feature没有其他commit,我们通过phpstorm,再次pull或者fetch一遍该feature,并且check out一个新本地featrue image.png
我们发现,当前Index.php文件依然为蓝色,并且内容不变
c)也就是说,如果当前分支没有进行commit,也就是远程feature和本地feature是相同版本的,那么无论pull和fetch,都不会改变当前编辑状态下任何文件,除非两个版本不相同,要么远程feature已经被提交过,或者本地commit过。
2、A和B同时开发一个feature分支
a)A feature开始开发,发现忘记提交了,然后pull最新的feature,发现如下提示
image.png
这个的意思是,你没有commit,但却产生了冲突,pull会破坏你的工作,所以你需要commit你的feature(因为这样才能保证你的代码安全)
果然再次pull的时候出现merge界面
image.pngimage.png
IDE的意思是让我们通过,这种实时方式解决冲突;但我想通过这种方式知道有冲突,而不用这种方式解决冲突,于是我们abort;发现多了一个错误,我们可以Revert回到冲突之前状态
image.png
c)通过重新pull方式解决冲突。又发现了问题,意思是MERGE_HEAD exists;
image.png
我们可以通过reset head回到上一版本的head
image.png
可以解决冲突了
d)也可以用a的方式解决冲突
e)有个bug,解决玩完冲突的时候发现push不上去,我们需要改动一些代码,重新commit,commit时候可以选择把解决冲突的信息带上。
3、A和B不同分支(FeatureA,FeatureB),分别向develop PR
a)当A先向develop PR的时候,可以自动合并
image.png
b)当B先向develop PR的时候,此时如果A再向develop PR,发现冲突
image.png
c)A开始解决冲突
方式一:直接A的feature项目pull,解决冲突
image.png
方式二:
1、远程develop checkout as一个新分支develop
image.png
2、checkout feature分支,然后选择develop右键Merg into Current,意思是说把develop合并到feature。
3、commit一下,push一下,可以把develop删除了
4、好了,再次feature->PR->develop
image.png
网友评论