要么改变世界,要么适应世界

Git学习笔记之多人协作

2022-02-10 14:03:09
85
目录

书接上回,本文介绍利用Git进行多人协作。

我们都知道,Git是一个分布式版本控制管理软件,何为分布式?简单来说代码仓库在多台主机上都有备份,任意一台挂了也不至于代码丢失(当然所有关联了该仓库的主机都挂了的时候另当别论)。

我们所说的多人协作就是每个人在自己的电脑上都有中央仓库代码的一份备份代码,适当之时将我们的代码推送至中央仓库或者拉取别人写的代码下来,这时候就需要一台电脑充当服务器,在上面运行我们的Git程序,但是我们就像简简单单使用一下Git,并不想搭建服务器,可以吗?

答案是肯定的,有不少企业都推出了第三方代码托管平台,最出名的怕不是Github了,不过有一些特殊原因,该网站可能不稳定,建议配合国内的托管平台使用,国内比较知名的有GiteeCODING,另外,github默认所有仓库都是公开的,要想建立私有的仓库还是要充值,不过要是有教育邮箱可以优惠,该网站的用户也比较多,上面的项目质量也更好。

远程仓库的使用

为了方便演示多人协作,以使用github为例,本人使用的笔记本和服务器作为两个用户连接到github上面的仓库。

创建GitHub账户并新建一个空仓库

注册账号就不用多说了吧。

然后点击右上角的加号,点击"new repository",输入名字“cooperation”,然后点击“Create repository”。

关联SSH Key 到GitHub

在Windows系统上面,首先创建SSH Key,打开命令提示符窗口或者Git bash

输入以下命令:

ssh-keygen -t rsa -C "495592364@qq.com"

然后按下三次回车即可生成。

记得把邮箱换成你的,然后打开C:\Users\YaleXin\.ssh,即你的用户名下的.ssh文件夹, 里边有id_rsaid_rsa.pub这两个文件 , 这两个就是SSH Key的秘钥对,id_rsa是私钥,千万不能泄露出去,id_rsa.pub是公钥,可以放心地告诉任何人。

然后打开id_rsa.pub,将里边的内容复制,接着打开GitHub网站,依次点击你的头像,“setting”,“SSH and GPG keys”,然后将刚刚复制的内容“ Key ”中,起一个好一点的“title”。

这样子Windows系统以后就可以关联GitHub了。

同样的方法在服务器上面再次操作

ssh-keygen -t rsa -C "me@yalexin.top"

然后注意公钥生成的位置即可。

然后将公钥内容加到GitHub

本地仓库关联GitHub仓库

Windows系统上面,打开命令提示符窗口或者Git bash,初始化本地仓库

$ mkdir cooperation
$ cd cooperation
$ git init
Initialized empty Git repository in E:/MyBlog/cooperation/.git/

然后开始干活啦,主分支添加readme文件

$ touch README.md
$ git add .
$ git commit -m "创建仓库"
[master (root-commit) 3469c3f] 创建仓库
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 README.md

关联远程仓库

git remote add origin https://github.com/YaleXin/cooperation.git

https://github.com/YaleXin/cooperation.git这个地址在GitHub仓库界面获得。

添加后,远程仓库的名字就是origin,当然了,这是Git默认的叫法,你要是喜欢也可以改成别的,但是最好见名思意,origin这个名字一看就知道是远程库。

下一步,就可以把本地库的所有内容推送到远程库上:

$ git push -u origin master

由于这是我们第一次向远端仓库推送,即远端仓库还没有该分支,因此需要加上-u参数,下次需要推送该分支的时候直接git push即可。

创建本人的分支

$ git switch -c dev
Switched to a new branch 'dev'
$ git switch -c Axin
Switched to a new branch 'Axin'
$ touch xin.data
$ git add .
$ git commit -m "添加用户信息"
[Axin 64f3345] 添加用户信息
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 xin.data

合并到dev分支

$ git switch dev
Switched to branch 'dev'
$ git merge Axin --no-ff -m "阿信完成用户信息"
Merge made by the 'ort' strategy.
 xin.data | 0
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 xin.data

dev分支推送到远端

$ git switch dev
Switched to branch 'dev'
$ git push -u origin dev

实际情况中,master分支是主分支,因此要时刻与远程同步,dev分支是开发分支,团队所有成员都需要在上面工作,所以也需要与远程同步,bug分支只用于在本地修复bug,就没必要推到远程了,除非老板要看看你每周到底修复了几个bug,或者说你修复bug也作为效绩的一部分,哈哈哈哈哈哈;feature分支是否推到远程,取决于你是否和你的小伙伴合作在上面开发。

然后在Linux上面的用户只需要克隆该仓库既可以看到这边的提交了

$ git clone https://github.com/YaleXin/cooperation.git

不过默认情况下只会拉取远端仓库的master分支

如果需要拉取dev分支,则需要

$ git branch dev origin/dev

即新建一个dev分支关联至远端仓库的dev分支。

当然了,最好在这边新建自己的分支,并且定期使用git pull更新devmaster分支。

如果git pull提示no tracking information,则说明本地分支和远程分支的链接关系没有创建,用命令git branch --set-upstream-to branch-name origin/branch-name即可。

不过由于GitHub可能访问不正常,国内建议使用gitee

历史评论
开始评论