学习到这里之后,感觉对于小型团队合作就够用了。后续还有其他课程目前感觉不太用的上,比如rebase,标签管理,自定义git,所以学习笔记先到这里告一段落吧~~
廖雪峰Lec16:多人协作
git remote
git remote -v //查看远程库信息
git push origin master //把本地master推送到远端master
git push origin dev //把本地dev分支推送到远端dev
git clone git@github.com:LuffysMan/learngit.Git //假设另一个小伙伴想克隆项目(可以换台电脑或者换个目录)
git branch //只能看到本地仓库master
git checkout -b dev origin/dev //创建本地dev分支映射到远端origin/dev
vi env.txt
git add env.txt
git commit -m "add env" //添加一个文件env.txt
git push origin dev //提交到远端
cat env.txt //你也想添加一个evn.txt,此时你处于dev分支
git add env.txt
git commit -m "add new env"
git push origin dev //失败!你和你的小伙伴都提交了env.txt,冲突了!
git pull //好吧,你妥协了,准备抓取小伙伴的env.txt下来;纳尼,又 //失败,因为你本地dev没有映射到远端origin/dev
git branch --set-upstream-to=origin/dev dev
git pull //ok,抓取成功,但提示合并有冲突
vi env.txt //手动修改冲突
git add env.txt
git commit -m "fix conflict"
git push origin dev //你也把env.txt成功推送到远端dev分支
小结
1.并不是一定要把本地分支往远程推送,那么,哪些分支需要推送,哪些不需要呢?
a.master分支是主分支,因此要时刻与远程同步;
b.dev分支是开发分支,团队所有成员都需要在上面工作,所以也需要与远程同步;
c.bug分支只用于在本地修复bug,就没必要推到远程了,除非老板要看看你每周到底修复了几个bug;
d.feature分支是否推到远程,取决于你是否和你的小伙伴合作在上面开发
2.多人协作的工作模式通常是这样:
a.首先,可以试图用git push origin <branch-name>推送自己的修改;
b.如果推送失败,则因为远程分支比你的本地更新,需要先用git pull试图合并;
c.如果合并有冲突,则解决冲突,并在本地提交;
d.没有冲突或者解决掉冲突后,再用git push origin <branch-name>推送就能成功!
e.如果git pull提示no tracking information,则说明本地分支和远程分支的链接关系没有创建,用命令git branch --set-upstream-to <branch-name> origin/<branch-name>。
f.在本地创建和远程分支对应的分支,使用git checkout -b branch-name origin/branch-name,本地和远程分支的名称最好一致