1. github远程协作的两种方式
前面我写的笔记,都是自己一个人在玩,无论是本地操作还是推送到远程都是自己推送到自己的仓库。
如果是别人拥有这个仓库,而我想对这个仓库的内容更改后,然后想推送更新到这个仓库,我们要有什么方法?
1.1 邀请你作为协作者
仓库拥有者邀请你作为该项目的协作者,那么这时你就有权限向该仓库推送更新。
1.2 pull request机制
仓库拥有者并不想邀请你作为协作者的身份,这时github还有另一种机制 pull request,可以让你更新到那个仓库。大致的流程就是:
- 首先你需要fork那个仓库到你自己的github中,其实就是复制了一份副本到你自己的仓库
- 然后克隆你自己fork的这个仓库到本地
- 在本地修改之后,我们在 git commit提交到本地
- 然后再git push推送到自己fork的远程仓库
- 推送到了自己的仓库之后,我们再提交pull request,其实就是申请原仓库的拥有者把自己推送的更新,请求合并到他自己的仓库。
下面我先介绍下,仓库拥有者邀请你作为协作者,这种方式实现团队协作。
2. 协作者先克隆别人的仓库到本地
在开搞之前,还需要注册一个github小号,或者找别人要一个账号来进行测试。
- 首先,我们克隆别人的仓库到自己本地电脑
- 然后对该仓库进行常见的本地操作,比如 git status / git add / git commit 等等。我们修改了之后提交更新到本地仓库
- 本地提交了更新之后,我们想把更新推送到远程仓库。这时是拒绝你推送的,因为那个仓库不属于你,你无权限推送。
3. 仓库拥有者邀请协作者加入
我们需要打开在github网站上自己的一个仓库
然后,在Collaborators选项中,填写邀请的账号。
当我们填写邀请的账号点击完成时,github就会发送一封邮件给受邀请的协作者。然后我们就等待受邀请的协作者同意。
然后受邀请者打开邮件,点击同意邀请即可。
这个时候,如果你再次向这个仓库推送自己在本地的commit,那么就可以推送成功了的,因为你已经有权限向该仓库提交更新了。
4. 仓库拥有者拉取协作者的更新
上面,仓库的拥有者邀请了一位协作者加入到该仓库了。而且他还向该仓库推送了更新的内容。那么仓库的拥有者可以使用:
git pull origin master
使用该命令,可以拉取远程仓库的更新到自己的本地仓库。
这样就实现了远程协作啦。但是真是的情况并不会那么顺利的,因为还会产生团队协作的冲突。
5. 团队协作的冲突介绍
git团队成员协作时,一般会产生两种冲突
-
团队其中的一个成员向远程库推送了更新之后,其他所有的成员都不能再推送了,其他成员想要推送那么必须先拉取最新的远程库,然后才能推送。
-
当我们拉取了远程库最新的内容时,如果别人提交的远程库的修改和你自己在本地仓库的修改,是在同一个文件同一个地方时,那么就会导致自动合并失败,然后会进入到手动合并(手动合并的操作前面已经有写一篇文章介绍)。