这是我参与「第四届青训营」笔记创作活动的第 10 天
既然是程序员一定知道 GitHub,使用 GitHub 大概率会涉及团队协作,那么如何提高团队协作效率,做好代码版本控制呢?以下为我所经历过的一些实践。
名词约定:
上游仓库,即团队协作的【共享仓库】,大家都用这份 basic 代码。它当然也是远程仓库,但为了区分本地代码的远程仓库,我们暂且把它叫做上游仓库。远程仓库,即你【自己的】和本地仓库一致的【远程仓库】。本地仓库,clone origin 到【本地的仓库】。
主仓库建分支-分支合并
这种方式是大家 clone 的是 上游仓库 的代码,也就是共享仓库中的代码,clone 到本地之后,基于 master 新建分支,然后在分支上开发,开发完毕后提 PR 合并分支到 master 分支。
缺点:
- 多人协作容易拉错分支。
- 上游仓库分支过多不便管理(甚至可能会有 test 之类的测试分支)。
fork 主仓库代码到自己仓库-提 PR
fork 上游仓库 的代码到自己的 远程仓库,此时自己的仓库中可以任意建分支,可以多任务建立多分支同时开发,开发完毕一个提 PR 到 上游仓库。
优点:
- 便于多人协作,fork 到自己仓库后可以任意建分支,每人的仓库分支代码互不影响。
- 上游仓库分支清晰。
常用指令
git clone {repo address} 克隆远程仓库代码到本地
git checkout {-b} {branch} -b 新建并切换分支到 branch,git checkout branch 切换到 branch 分支,确保本地存在 branch 分支。
git add . 暂存当前目录下的所有文件
git status 当前项目文件状态(修改或删除)
git commit -m {message} 打包当前修改,记录提交信息
git push {name} {branch} 发送当前打包并记录提交信息后的代码到 name 远程仓库的 branch 分支,直接 push 默认是 origin 的当前本地分支同步的分支。
git remote -v 查看当前所有远程仓库
git add remote {name} {repo address} 一般用来添加上游仓库,做之后的同步用
git fetch {name} 同步仓库,那么 为远程仓库的 name,不写默认是 origin
git rebase {name}/{branch} 拉取某仓库的某一分支的代码到本地进行同步,可能会产生冲突,解决方法戳 《解决冲突》,解决好冲突就可以 push 了。