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