Git学习笔记之多人协作
书接上回,本文介绍利用Git
进行多人协作。
我们都知道,Git
是一个分布式版本控制管理软件,何为分布式?简单来说代码仓库在多台主机上都有备份,任意一台挂了也不至于代码丢失(当然所有关联了该仓库的主机都挂了的时候另当别论)。
我们所说的多人协作就是每个人在自己的电脑上都有中央仓库代码的一份备份代码,适当之时将我们的代码推送至中央仓库或者拉取别人写的代码下来,这时候就需要一台电脑充当服务器,在上面运行我们的Git
程序,但是我们就像简简单单使用一下Git
,并不想搭建服务器,可以吗?
答案是肯定的,有不少企业都推出了第三方代码托管平台,最出名的怕不是Github
了,不过有一些特殊原因,该网站可能不稳定,建议配合国内的托管平台使用,国内比较知名的有Gitee
、CODING
,另外,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_rsa
和id_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
更新dev
和master
分支。
如果git pull
提示no tracking information
,则说明本地分支和远程分支的链接关系没有创建,用命令git branch --set-upstream-to branch-name origin/branch-name
即可。
不过由于GitHub
可能访问不正常,国内建议使用gitee
本文由「黄阿信」创作,创作不易,请多支持。
如果您觉得本文写得不错,那就点一下「赞赏」请我喝杯咖啡~
商业转载请联系作者获得授权,非商业转载请附上原文出处及本链接。
关注公众号,获取最新动态!