一. 前言
终于快要简单的介绍完git系列的操作了。在介绍GitHub上进行多人协作开发之前,要先说明一些内容
- 在之前的git分支简介和git详解这两篇文章中,分支合并以及切换等操作只是在本地进行,没有进行远程操作,只是在本地版本库进行提交。在本地版本库即可完成大部分操作。
- 链接远程仓库,即在GitHub网页端建立仓库,并把它同本地仓库链接起来,这样就可以把你的代码推送到远端,与此同时,你的伙伴也可以从远端垃取你的代码,推送他的代码,并且可以合并你们的代码,实现合作开发
- 在实际开发中,我们应该按照几个基本原则进行分支管理:
main分支应该是非常稳定的,平时不能在上面干活;
你和你的小伙伴们每个人都在自己的dev分支上干活,每个人都有自己的分支,确定修改完成可以正常运行后,往main分支上合并就可以了。
二. 合并分支(简单流程)
下面先来简单的介绍一下合并分支的流程
- 假设我现在在我自己的分支GMH上,并且完成了一些修改
$ git checkout GMH //在我自己的分支GMH上
$ git add . //提交到暂存区
$ git commit "test" //提交到本地版本库
$ git push origin GMH //推送到GMH的远程仓库
到此为止我们先提交到了自己的分支上
- 接下来我们尝试提交到主分支
$ git checkout main //切换到主分支
$ git pull //先把主分支上最新的提交拉取下来,多人开发保险
$ git merge GMH //把自己分支的代码合并到主分支上
$ git push origin main//把本地主分支的内容提交到远端
- 拉取主分支的代码后合并主分支的过程
$ git checkout main //切换到主分支
$ git pull = git fetch + git merge //拉取到本地主分支
$ git checkout GMH //切换回我的分支
$ git merge main //把本地主分支的内容合并到自己的本地分支上
关于远程仓库和本地仓库以及合并分支的情况,我按我的理解画了一幅图,希望可以帮助理解一下这个概念
三. 案例分析
远程分支多人开发的案例介绍请看这篇
注意:
- 请分清楚,实际origin/main,本地main,本地显示的origin/main
如果你在本地的 master 分支做了一些工作,在同一段时间内有其他人推送提交到 git.ourcompany.com 并且更新了它的 master 分支,这就是说你们的提交历史已走向不同的方向。 即便这样,只要你保持不与 origin 服务器连接(并拉取数据),你的 origin/master 指针就不会移动。
- 与给定的远程仓库同步数据,git fetch
- 推送(push)到自己分支的远端时,步骤和之前单人开发相同,没有什么差别
- 在你推送(push)分支到主分支时,在push前请一定要pull(拉取)一下远端的最新代码
- 当你push到远端主分支之后,对于你的小伙伴来说,他的本地主分支就已经不是最新了,如果他愿意现在就可以再pull一下咯。在提交之前,也要在拉取(pull)一下。
- 对很多开发人员而言,一打开电脑,马上先git pull,拉取最新的。然后进行常规开发,
开发完毕之后,在git push之前,还需要使用git pull再拉取一遍。