目录
多人协作
多人协作一
准备工作
协作开发
多人协作二
准备工作
额外场景
申请单合并分支
更推荐写法
远程分支删除后,本地git branch -a依然能看到的解决办法
多人协作
多人协作一
- 目标:在远程master分支下的file.txt文件新增代码“aaa”和“bbb”
- 实现:由开发者1新增“aaa”,由开发者2新增“bbb”
- 条件:在一个分支下协作完成
准备工作
1、在远程仓库中创建一个dev分支(远程分支,很推荐)
2、令linux中的开发者1获取新建的dev分支
- git branch -r:只显示哪些远程分支已经被拉取到了本地
- git branch -a:列出所有的分支,包括本地分支和远程分支,如果一个远程分支被拉取到了本地,它将以类似
remotes/origin/branch_name
的形式显示在列表中
3、在windows环境下clone一个和linux中开发者1一样的仓库,模拟开发者2:
①D盘新建一个空的git文件夹,进入文件夹,在空白处按住shift+鼠标右键,选择在此处打开PowerShell窗口:
② 将远程仓库克隆给一份给它
协作开发
1、开发者1在其本地创建一个dev分支,在将该分支切换为工作分支后与远程dev分支建立连接
- git checkout -b 本地分支名 远程分支名
- git branch -vv:显示本地分支列表以及每个分支的跟踪信息
2、修改file.txt文件,向其中新增aaa并提交给本地仓库的dev分支
3、将开发者1的本地dev分支提交给远程dev分支
出现以下界面可以用git config --global push.default matching指令解决:
提交成功:
4、开发者2在其本地创建一个dev分支,在将该分支切换为工作分支后与远程dev分支建立连接
5、在记事本上修改file.txt文件,新增bbb
6、尝试将开发者2的本地dev分支提交给远程dev分支
- 原因:冲突问题,二者都将file.txt文件新增内容提交给远程仓库,远程仓库不知道要用谁的
7、人工解决冲突问题并再次提交(对远程dev分支与当前dev分支合并后出现的冲突进行修改)
8、向远程dev分支推送成功(此时远程master分支中的file.txt文件仍未被修改)
9、合并远程的dev分支和master分支
远程操作:
本地操作:
①将本地dev更新至最新(如果不更本地dev的file.txt没有新增bbb)
②切换至本地master并令本地master为最新状态
如果不更新的话,如果远程master中有ccc但是此时本地master没ccc,在本地master合并了本地dev后进行提交时,该master也没有ccc
③切换至本地dev,并合并本地master(由于什么都没干所以中间有些内容是没啥东西的)
- 原因:这样有了冲突也可以在dev上进行修改,直接在master上修改有风险
④切换至本地master,并合并本地dev,最后将合并后的master提交给远程master
⑤查看远程仓库的master分支中的file.txt文件(已被修改)
⑥删除远程dev分支
多人协作二
- 目标:远程master分支下新增function1和function2文件
- 实现:由开发者1新增function1,由开发者2新增function2
- 条件:在不同分支下协作完成
准备工作
①开发者1创建一个feature-1分支,并切换至该分支,同时在该分支下创建并编写function1文件
②将本地feature-1分支推送至远程仓库
本地与远程仓库建立连接的三种方式:(②时的远程仓库中没有设置分支所以后两种方法不能用)
- git push origin 本地分支名:强制推送本地分支至远程仓库
- git checkout -b 本地分支名 远程分支名:切换至本地分支时就将该分支与远程分支建立连接
- git branch -u origin/远程分支名 本地分支名:单纯的将本地分支和远程分支建立连接
③保证开发者2的master分支是最新的版本
④开发者2创建一个feature-2分支,并切换至该分支,同时在该分支下创建并编写function2文件
- 新建function2文件时直接在对应文件夹下创建function2文本文件即可
至此已完成初始目标
额外场景
问题:开发者2生病,开发者1要接替开发者2的工作
①开发者1从远程仓库中获取开发者2的工作内容
对应git pull:
- 拉取分支中的内容时需要将两个分支建立连接后才能拉取
- 可以直接拉取仓库内容
②开发者1创建feature-2分支,并切换至该分支,同时将该分支与远程仓库中的feature-2分支连接
③开发者1帮助开发者2继续开发他的function2文件,同时提交至本地feature-2分支
④将本地feature-2分支更新的内容推送到远程feature-2分支中
新问题:此时开发者2病好了申请继续开发
①开发者2获取远程仓库中开发者1写了一部分的feature-2分支的内容(不拉就还是一行coding)
② 开发者2完成对function2文件的开发
申请单合并分支
管理者进行审批:
更推荐写法
虽然申请单的方式看起来很方便,但是为了防止冲突问题,我们更推荐在副分支上将该副分支与主分支合并后(有冲突问题就解决)再将该分支与主分支合并的方式:
①将开发者1的master分支更新至最新:
② 合并本地的feature-1分支和master分支,如果两个分支没有冲突就会显示以下界面
③查看本地feature-1分支是否与远程的feature-1分支连接
④强制将开发者1的本地feature-1分支推送给远程仓库(新修改的内容覆盖远程的)
⑤提交申请表单申请将远程feature-1分支与远程master分支合并
⑥删除远程的feature-1和-2分支
远程分支删除后,本地git branch -a依然能看到的解决办法
在删除远程仓库的feature-1和feature-2分支后,远程仓库中只有master分支了:
但是此时我们在开发者中使用git branc -a依然能看到原来的feature-1和feature-2分支:
展示远程分支情况指令:git remote show origin
清理无用远程分支:git remote prune 指令名 远程仓库分支名(git branch -a时不会显示)
最后用git branch -d 分支名删除本地的无用分支即可
~over~