Git学习笔记第四篇,主要参照廖雪峰的Git教程,好记性不如烂笔头,学习成果形成文档,加油!
1 多人协作
1.1 克隆分支
当从远程仓库克隆时,实际上Git自动把本地的master
分支和远程的master
分支对应起来了。远程仓库的默认名称是origin
。
要查看远程库的信息,用git remote
也可以用下述命令查看远程仓库更加详细的信息:git remote -v
origin git@github.com:AlphaGKH/learngit.git (fetch)
origin git@github.com:AlphaGKH/learngit.git (push)
上述内容显示的是可以抓取和推送的origin
的地址,如果没有推送权限就看不到push
地址。
1.2 推送分支
推送分支,就是把本地某个分支上的所有本地提交推送到远程库。比如将本地仓库learngit目录下的所有提交推送到GitHub远程库对应的分支上。
推送时,要指定本地分支,这样,Git就会把该分支推送到远程库对应的远程分支上。比如:
git push origin master
就是把本地的master
分支推送到远程库origin
对应的远程master
分支上。
git push origin dev
把本地的dev
分支推送到远程库origin
对应的远程dev
分支上。
关于推送分支的原则有以下几条:
(1)master
分支是主分支,因此要时刻与远程保持同步;
(2)dev
分支是开发分支,所有人都在上面工作,因此也要与远程保持同步;
(3)bug
分支只用于修复bug,用完即删除,因此不用推送到远程;
(4)feature
分支如果是与人合作开发则需要推送到远程,与他人共享开发进度,否则就不需要。
1.3 抓取分支
多人协作时,大家都会往同一个项目的远程库的master
和dev
分支上推送自己的修改。现在一个程序员王小二从GitHub上克隆learngit
仓库到他的本地目录。
git clone git@github.com:AlphaGKH/learngit.git
此时王小二能够在他的电脑上看到目录learngit
,此时该目录下只有分支master
。但是王小二要在dev
分支上进行开发,于是他使用下列命令在本地创建与远程分支对应的分支。
git checkout -b dev origin/dev
这个命令的作用是:将远程库origin
中的dev
分支创建到本地的dev
,并切换到本地dev
分支。
现在王小二就可以在本地的dev
分支上进行工作,然后不断的将本地的dev
推送到远程仓库learngit
中对应的dev
分支了。
王小二使用git push origin dev
将本地dev
分支上的最新修改推送到远程库origin
的dev
分支,
同时,另外一个程序员张小四也对同样的文件做了修改,并准备推送到远程,这个时候,张小四发现推送失败了,这是因为张小四的推送与王小二的推送有冲突,这个时候,张小四把最新的提交(即是王小二刚刚的提交)从远程库origin/dev
上抓取到本地,然后在本地解决冲突后,再重新推送。
步骤 | 作用 | 指令 |
---|---|---|
1 | 指定本地dev 分支与origin/dev 的链接 |
git branch --set-upstream dev origin/dev |
2 | 从origin/dev上抓取到本地 | git pull |