到目前为止,我们已经掌握了如何使用 “月光宝盒” 进行时光穿梭,对本地的代码库实行版本控制,麻麻再也不用担心我的文件备份或者丢失的问题啦!但是好像到目前为止,只有我一个人在玩单机?没意思… 那我想玩 “多人竞技” 模式咋办?
之前我们提到了,Git是分布式版本控制系统,同一个Git仓库,可以分布到不同的机器上。怎么分布呢?最早,肯定只有一台机器有一个原始版本库,此后,别的机器可以“克隆”这个原始版本库,而且每台机器的版本库其实都是一样的,并没有主次之分。
因此,我们可以找一台电脑充当服务器的角色,搭建一台运行Git的服务器,每天24小时开机,其他每个人都从这个“服务器”仓库克隆一份到自己的电脑上,并且各自把各自的提交推送到服务器仓库里,也从服务器仓库中拉取别人的提交。
但是!这些工作(搭建一个Git的服务器)并不需要我们去做,说了这么多具体该怎么操作呢?
继续往下看呗~
可能大家对Git远程仓库是什么,以及是做什么的还不是特别了解,为了理解Git中的远程仓库在Git中扮演者怎样的角色,我这里还是画了一张图来给大家解释,从图中可以看出我们个人的PC对文件做了修改之后,会先上传到本地仓库(中间省略了add到暂存区的步骤),也就是分支区,然后我们会通过一个push的指令将修改过后的代码同步到远程的代码库,相信大家都听说过大名鼎鼎的Github(全球最大的开源网站)吧!Github扮演的就是远程仓库的角色,全球成千上万的项目都存放在这么个 “大缸” 里(目前已经被微软收购)。
刚才咱们讲的是将本地的代码同步到远程仓库中,那么公司如果来了一个新员工Tiffany,那么她的电脑上肯定也需要一份项目的代码吧?为了讨好小姐姐,在座如果不知道Git的各位肯定会纷纷拿着U盘,在自己电脑上面把项目拷下来,然后帮小姐姐把项目导进去吧!
我就不一样了,上来一顿Linux指令敲!将项目从Github/Gitee上pull下来,瞬间获得小姐姐的芳心!
哈哈哈,开个玩笑… 所以说在Git中的远程仓库更多的扮演的是一个代码交互的过程,假如断网了,离开了远程仓库,我们本地还有一个仓库,自己可以玩单机,然后同步代码到本地,网络连接上了,我们pull一下,就可以把本地分支的代码同步到远程,体验联机版操作!想怎么玩就怎么玩,还不用担心本地仓库代码丢失,到时候哭着找老板就不好了…
讲了这么多,没什么卵用,咱们实操看看效果!因为Github实在是太卡啦!(主要是我也没开VPN服务),所以这里就是用Gitee给大家演示,毕竟国产的还是好啊!川普那家伙指不定哪天就不让我们用Github了呢… 这两个网站的操作基本上也没啥差别。
第一步:创建SSH Key
在用户主目录下,看看有没有.ssh
目录,如果有,再看看这个目录下有没有id_rsa
和id_rsa.pub
这两个文件,如果已经有了,可直接跳到下一步。如果没有,打开Shell(Windows下打开Git Bash),创建SSH Key
:
$ ssh-keygen -t rsa -C "[email protected]"
注意了,后面敲击的是自己的邮箱,不要输成我的邮箱啦!
Marco@Marco-Laptop MINGW64 /d/git/repository (master)
$ ssh-keygen -t rsa -C "[email protected]"
Generating public/private rsa key pair.
Enter file in which to save the key (/c/Users/Marco/.ssh/id_rsa):
Created directory '/c/Users/Marco/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /c/Users/Marco/.ssh/id_rsa.
Your public key has been saved in /c/Users/Marco/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:06z6WBEW15dqXE1rIyOh69oA+/vbh744UT1B6RIXVGU example@qq.com
The key's randomart image is:
+---[RSA 2048]----+
| . .oo++=E|
| o..o++.o|
| o. o=*.+ |
| . +.o=++ .|
| . S.+.. . |
| o .= |
| . .o.. . |
| .++.o. . |
| o=+=++o |
+----[SHA256]-----+
你只需要把邮件地址换成你自己的邮件地址,然后一路回车,使用默认值即可,因为这个Key也不是用于军事目的,所以也没必要设置密码。
如果一切顺利的话,可以在用户主目录里找到.ssh目录,里面有id_rsa和id_rsa.pub两个文件,这两个就是SSH Key的秘钥对,id_rsa是私钥,不能泄露出去,id_rsa.pub是公钥,可以放心地告诉任何人。
所以,我这里大胆的把公匙给你们看!反正你们也看不懂!哈哈哈。
第二步:在Gitee中设置SSH公钥
回归正题,如果有Gitee账号的朋友在设置栏很容易就可以找到安全设置中的SSH公钥,然后将id_rsa.pub中的密钥输入点击确定就可以啦!
接着会出现弹出框,输入登录Gitee的密码即可
添加成功之后,会出现以下框框,理论上是可以设置多个公钥,比如说在你办公室的电脑上设置一个,家里的电脑上设置一个,这样的话你就可以在家里躺着敲代码啦!(PS:躺舒服了可以,别完成不了工作第二天交不了差…)
第二步:在Gitee中创建项目
在Gitee上创建一个新的项目,选择右上角用户头像进入到菜单“控制面板”,然后点击“创建项目”。
项目名称最好与本地库保持一致! 如果想创建一个空的仓库,将 “使用Readme…” 的勾勾去掉即可。
项目创建之后自动生成资源链接地址。
然后,我们在本地库上使用命令git remote add
把它和码云的远程库关联。origin
是固定名称,代表的是远程仓库的名字,后面紧跟着的就是刚刚在网站上生成的资源链接地址。
$ git remote add origin https://gitee.com/marco_zheng/mypro.git
接着使用git push -u origin master
把本地仓库的master分支推送到远程仓库,使用git push -u origin dev
把本地仓库的dev分支推送到远程仓库。
推送完成之后大家会发现,我们的远程仓库已经被同步了!点击左边的下拉框可以任意切换master稳定模式和dev开发模式。
熟悉了如何上传资源到远程仓库,接下来我演示一下如何从远程仓库拉取代码库。
首先我们将D盘中之前创建的repository文件夹删除
接着执行命令$ git clone https://gitee.com/marco_zheng/mypro.git
之后就可以从远程仓库拉取项目
此时我们再查看目录D:/git
是不是就多了一个文件夹?
Marco@Marco-Laptop MINGW64 /d/git
$ ll
total 0
drwxr-xr-x 1 Marco 197121 0 8月 23 17:54 mypro/
cat tuofeilun.txt
查看文件也没有问题
使用$ git checkout -b dev origin/dev
指令可创建本地的dev分支并和远程的dev关联
这里稍微总结一下上面使用远程仓库的指令
指令 | 解释 |
---|---|
git remote add origin (url) | 把远程仓库和本地仓库进行关联 |
git push -u origin master | 把本地仓库的master分支推送到远程仓库 |
git push -u origin dev | 把本地仓库的dev分支推送到远程仓库 |
git clone (url) | 把远程仓库的所有分支全部clone下面,但是使用git branch去查看时只能到master分支 |
git checkout -b dev origin/dev | 创建本地的dev分支并和远程的dev分联 |
终于到了本次取经的目的地啦!如果我说之前咱们学习过的指令在实际开发中基本用不上时,在座的各位是不是要疯了!
哈哈哈,我这么苦口婆心的讲解,是为了让各位明白一个道理,任何一个可视化的界面操作的底层都是由这些操作指令构成的,当你熟悉并掌握了这些底层的指令,那么可视化界面上的操作对你而言就是小儿科!
所以说了解原理是最重要的,那么本节的最后,传授给大家最后一招了!把项目分享到Gitee。
第一步:准备工作
1)一个注册好的码云帐号,还没有注册的朋友赶紧的 Gitee,未来说不定就用不上Github了…
2)安装好的Eclipse (本示例用的版本 sts ,已经集成Git)
第二步:Eclipse 配置Git 相关帐号资料
因为我们之前在Git第一篇博文中安装Git的时候已经配置过了,配置如下
$ git config --global user.name "Your Name"
$ git config --global user.email "[email protected]"
配置完成之后在C盘的User中会生成下面这个文件,Eclipse会自动去检索这个文件,因此配置过的朋友就不用重复配置啦!
第三步:Eclipse 配置 publicKey
同样的这一步操作之前在Gitee中的设置SSH公钥中已经做过了,因此也不需要配置,如果没有配置过的朋友,按照这个步骤操作可以获取publicKey Window --- Preferences --- General --- Network Connections --- SSH2 --- Key Management --- Generate RSA Key ---
第四步:在Gitee中配置用户SSH公钥
还是重复之前的步骤,这里我就不多赘述啦!
补充一: 为什么要配置用户 ssh key 而非项目ssh key?
项目的 sshkey 只针对项目,且我们仅对项目提供了部署公钥,即项目下的公钥仅能拉取项目,这通常用于生产服务器拉取仓库的代码。
用户的 key 则是针对用户的,用户添加了 key 就对用户名下的项目和用户参加了的项目具有权限,一般而言,用户的key具有推送和拉取的权限,而项目的 key 则只具有拉取权限。
补充二: 验证添加的 key 是否生效
在 Git Bash 中输入命令: ssh -T [email protected]
返回: Welcome to Gitee.com, xxx ! ---- 则表示添加key成功!如下
第五步:在Gitee中新建仓库
还是注意,仓库名称最好和项目名称保持一致!
第五步:Eclipse上创建一个项目
第五步:Eclipse项目分享到码云
选中项目gitee --- 右键 --- Team --- Share Project --- Git
紧接着进入到Configure Git Repository,创建一个本地仓库
以上步骤完成之后,我们会发现项目上多了很多?
,这表示工作区的资源和本地仓库中的资源不一致,这是很显然的,毕竟咱还没有commit…
接着咱们提交项目: 选中项目erp--- 右键 --- Team --- Commit
并选择中要提交的文件添加到暂存区,注意这里的add index
的意思就是将文件添加到暂存区stage
大家注意看右侧栏会发现有三个区域,第一个区间就是工作区,第二个区间就是暂存区,第三个区间就是咱们的提交到本地仓库的注释区,相当于之前的git commit -m "common"
的操作。
提交资源到本地仓库之后,图标会变成黄色的圆柱体(表示仓库)。此时本地仓库是有资源了,但是还需要将资源上传至远程仓库,所以还没有结束,我们接着走。
右击选择push Branch master
将此前在Gitee创建的URI资源链接地址拷贝到URI处,注意下方有一个输入账号密码的区域(我这里没有展示出来),记得填写。完成上述操作后一路选择Preview就可以啦!
如果看到此界面,选择Push就可以上传到远程仓库了
成功之后,咱们查看Gitee,会发现项目已经成功上传!
第六步:将码云的项目拉取到本地Eclipse
上传咱们已经完成了,那么如何将项目拉进来呢?
为了示范,咱将刚才上传的项目在本地的Eclipse中删掉,然后依次执行下面的操作
首先找到项目地址,并复制链接地址
紧接着进入Eclipse,鼠标右击选择Import
选择Git中的Project from Git
然后选择Clone URI
然后粘贴刚刚复制过的资源链接URI地址
接着选择下载的Directory路径,注意了,这一步操作完成就直接Cancel掉,不要继续选择。
因为我们之前是Maven项目,因此导入项目的方式应该选择Maven
选择之前从远程仓库拖项目进来的路径
完成上述所有操作之后,咱们的项目就顺利拉取进来啦!