Git/Github多人协作

在一个github的仓库里,一般会有一个主分支,此外会有许多开发分支,每个人可以自己拉取一个分支,开发者单独在这样的分支里开发自己的代码和功能,之后提交到拉取的分支上,最后在github网站上提一个pull request,等待确认无误,再merge到主分支上,至此,一个规范的流程就结束了。

流程

首先使用的是git clone 命令进行远程仓库的克隆, clone 命令会为你自动将其命名为 origin,拉取它的所有数据, 创建一个指向它的 master 分支的指针,并且在本地将其命名为 origin/master。 Git 也会给你一个与 origin 的 master 分支在指向同一个地方的本地 master 分支。

当克隆一个仓库时,它通常会自动地创建一个跟踪 origin/master 的 master 分支。简称为跟踪分支。

跟踪分支是与远程分支有直接关系的本地分支。跟踪分支跟踪的分支叫做“上游分支”。这时候当你使用git push/pull,Git可以自动的识别去哪个服务器上抓取,合并。

当我们将本地新建立一条分支与远程的分支进行关联的时候,可以使用 git checkout -b branch-name origin/branch-name也可以理解为在本地建立一个远程仓库某个分支上的跟踪分支。

但是如果你想将本地已经存在的分支与远程的分支进行关联的时候,则可以使用 git branch --set-upstream branch-name origin/branch-name

这样,你就已经准备好了团队协作的基本条件。

目前为止,我们本地有自己的main分支关联了远程的main分支,本地有自己的dev开发分支关联了远程的dev分支。假设远程的main分支存放的是这个项目的阶段性的成品,而为之需要的是一个团队许多人的努力,每个人在自己的分支单独操作,最后推送到自己的远程分支,事实上这些操作都是没有问题的,但是为了能够将你的代码加入到这个项目的main分支也就是真正被用起来,你现在还需要做的是在github上提一个pr(pull request)。确认之后就可以merge到main分支上了。

官方给出的PR定义如下:拉取请求(PR)可让您告诉其他人您已推送到 GitHub 存储库中的分支的更改。打开拉取请求后,您可以与协作者讨论和审查潜在的更改,并在您的更改合并到基础分支之前添加后续提交。

在项目开发的过程中,每个人都会在做类似以上的操作,最后我们都将自己代码合并到了main分支上,容易想到:假如我是一名开发者,我很有可能需要别的开发者所写的代码,所以远程的main分支会时不时的更新,作为开发者的我也需要将本地的main与远程的main进行同步,在本地通过git pull切换到main分支后执行git pull。之后在切换回自己的dev分支,调用 git merge 合并主分支上的最新更新。

注意在上面的拉取或者合并的过程中很有可能会产生冲突。可以使用git status查看那些文件有问题,进入文件查看几个相应的地方出现的>>>>>>>> ========= <<<<<<<<这样的东西,代码核查以后再add就可以了。