此次仿真试验主要集中于gitee上进行
1、单人项目开发
git add . // 表示将所有代码提交至暂存区
git commit -m "提交信息" // 将代码提交至本地仓库,注意提交的附加信息不可或缺
git push // 提交至远程仓库(gitee)
需要注意的是:
2、多人协同开发(重点)
1) 创建分支是基础,必不可少,此次创建了devA分支以及devB分支(此时,加上master主分支,共三个分支)
假设:起始是在master主分支
git branch devA // 创建本地分支devA (但此时分支仍定位在master主分支上)
git branch // 查看当前所处分支情况
git branch -r // 查看远程仓库分支情况
git checkout -b devC // 创建本地分支devC,会发现该创建方式会切换至该分支
// 同时发现它并不影响远程仓库的分支情况
git branch -d devC // 表示删除本地devC分支,需要注意的是不能所在的分支,
// 也即当前在本地devC分支不能删除它,需要切换至其他分支才能删除
git checkout devA // 表示切换至本地devA分支
2) ① 首先,检查主分支master的代码,发现a最终为a = 000(本地切换至master分支后的图示)
② 在master主分支上提交代码至远程仓库
1.1 提交所有文件至本地缓存区: git add .
1.2 本地缓存提交至本地仓库 : git commit -m "主分支提交"
1.3 提交至远程仓库 git push
此外,可以观察到远程仓库gitee内容也随之发生变化
③ 一般不允许在主分支master上进行开发,所以此次创建了两个分支,A同学操作分支devA,B操作分支devB
正常开发流程中,A、B很有可能对同一文件进行操作,而且可能出现不同的修改结果,这在最终合并到主分支时必然会出现冲突问题!
为了复现该过程,对部分内容进行了简化,但原理都差不多。具体为:B操作修改了MainActivity.java中的变量a的值,将a=000
修改为a=520,并提交至远程仓库。此时,倘若A想要在devB分支修改a=250时必然会发生冲突(模拟的是A、B分支修改同一变量,最终
合并时具体保留哪个版本的这一冲突问题),此时就应该对其进行修改,择其一进行保留!!
此时,对应的本地:
远程仓库:
注: 由于devA于devB皆为A多次修改(并解决了相应冲突),导致远程仓库数据devA和devB皆为A用户,为了便于说明,
B同学新建了devC分支(本地新建分支,提交至远程仓库就会新生成对应分支,无需专门去远程仓库进行建立),
并提交至了远程仓库。
查看远程仓库中B操作后的代码以及提交记录(发现B同学操作的a = 4):
那A如何将B操作的a值进行修改呢?
3.1 A首先需要在本地创建devC分支,并切换到该分支; git checkout -b devC
3.2 然后手动修改代码中a的值,将其修改成:a=250
3.3 提交到远程仓库
git add . // 提交至本地缓存
git commit -m "我是A,我修改了B在devC分支中的a的值" // 提交至本地仓库
git push origin devC // 此时,理应出现冲突,好像由于自己手动删除了devC库,居然不发生冲突!!
git pull origin devC // 出现冲突,拉取回来,解决冲突,择优选择保留!!
git merge devA // 假设当前在master分支,那么就是合并devA到master分支去,合并完成后,一定按照提交本地缓存、本地仓库、远程仓库的
// 方式进行提交,否则无法在远程仓库看到合并后的结果,也即无法看到merge主分支上有devA对应的a值详情,也即devA并未实际合并到merge!!