Marco's Java【Git入门(四) 之 使用Git远程仓库上传及拉取项目】

前言

到目前为止,我们已经掌握了如何使用 “月光宝盒” 进行时光穿梭,对本地的代码库实行版本控制,麻麻再也不用担心我的文件备份或者丢失的问题啦!但是好像到目前为止,只有我一个人在玩单机?没意思… 那我想玩 “多人竞技” 模式咋办?
之前我们提到了,Git是分布式版本控制系统,同一个Git仓库,可以分布到不同的机器上。怎么分布呢?最早,肯定只有一台机器有一个原始版本库,此后,别的机器可以“克隆”这个原始版本库,而且每台机器的版本库其实都是一样的,并没有主次之分。
因此,我们可以找一台电脑充当服务器的角色,搭建一台运行Git的服务器,每天24小时开机,其他每个人都从这个“服务器”仓库克隆一份到自己的电脑上,并且各自把各自的提交推送到服务器仓库里,也从服务器仓库中拉取别人的提交。

但是!这些工作(搭建一个Git的服务器)并不需要我们去做,说了这么多具体该怎么操作呢?
继续往下看呗~

Git远程仓库

可能大家对Git远程仓库是什么,以及是做什么的还不是特别了解,为了理解Git中的远程仓库在Git中扮演者怎样的角色,我这里还是画了一张图来给大家解释,从图中可以看出我们个人的PC对文件做了修改之后,会先上传到本地仓库(中间省略了add到暂存区的步骤),也就是分支区,然后我们会通过一个push的指令将修改过后的代码同步到远程的代码库,相信大家都听说过大名鼎鼎的Github(全球最大的开源网站)吧!Github扮演的就是远程仓库的角色,全球成千上万的项目都存放在这么个 “大缸” 里(目前已经被微软收购)。
刚才咱们讲的是将本地的代码同步到远程仓库中,那么公司如果来了一个新员工Tiffany,那么她的电脑上肯定也需要一份项目的代码吧?为了讨好小姐姐,在座如果不知道Git的各位肯定会纷纷拿着U盘,在自己电脑上面把项目拷下来,然后帮小姐姐把项目导进去吧!
我就不一样了,上来一顿Linux指令敲!将项目从Github/Gitee上pull下来,瞬间获得小姐姐的芳心!
哈哈哈,开个玩笑… 所以说在Git中的远程仓库更多的扮演的是一个代码交互的过程,假如断网了,离开了远程仓库,我们本地还有一个仓库,自己可以玩单机,然后同步代码到本地,网络连接上了,我们pull一下,就可以把本地分支的代码同步到远程,体验联机版操作!想怎么玩就怎么玩,还不用担心本地仓库代码丢失,到时候哭着找老板就不好了…
Marco's Java【Git入门(四) 之 使用Git远程仓库上传及拉取项目】_第1张图片
讲了这么多,没什么卵用,咱们实操看看效果!因为Github实在是太卡啦!(主要是我也没开VPN服务),所以这里就是用Gitee给大家演示,毕竟国产的还是好啊!川普那家伙指不定哪天就不让我们用Github了呢… 这两个网站的操作基本上也没啥差别。
第一步:创建SSH Key
在用户主目录下,看看有没有.ssh目录,如果有,再看看这个目录下有没有id_rsaid_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是公钥,可以放心地告诉任何人。
Marco's Java【Git入门(四) 之 使用Git远程仓库上传及拉取项目】_第2张图片
所以,我这里大胆的把公匙给你们看!反正你们也看不懂!哈哈哈。

第二步:在Gitee中设置SSH公钥
回归正题,如果有Gitee账号的朋友在设置栏很容易就可以找到安全设置中的SSH公钥,然后将id_rsa.pub中的密钥输入点击确定就可以啦!
Marco's Java【Git入门(四) 之 使用Git远程仓库上传及拉取项目】_第3张图片
接着会出现弹出框,输入登录Gitee的密码即可
Marco's Java【Git入门(四) 之 使用Git远程仓库上传及拉取项目】_第4张图片
添加成功之后,会出现以下框框,理论上是可以设置多个公钥,比如说在你办公室的电脑上设置一个,家里的电脑上设置一个,这样的话你就可以在家里躺着敲代码啦!(PS:躺舒服了可以,别完成不了工作第二天交不了差…)
在这里插入图片描述
第二步:在Gitee中创建项目
在Gitee上创建一个新的项目,选择右上角用户头像进入到菜单“控制面板”,然后点击“创建项目”。
Marco's Java【Git入门(四) 之 使用Git远程仓库上传及拉取项目】_第5张图片
项目名称最好与本地库保持一致! 如果想创建一个空的仓库,将 “使用Readme…” 的勾勾去掉即可。
项目创建之后自动生成资源链接地址。
Marco's Java【Git入门(四) 之 使用Git远程仓库上传及拉取项目】_第6张图片
然后,我们在本地库上使用命令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分支推送到远程仓库。
Marco's Java【Git入门(四) 之 使用Git远程仓库上传及拉取项目】_第7张图片
推送完成之后大家会发现,我们的远程仓库已经被同步了!点击左边的下拉框可以任意切换master稳定模式和dev开发模式。
Marco's Java【Git入门(四) 之 使用Git远程仓库上传及拉取项目】_第8张图片


从远程仓库拉取代码库

熟悉了如何上传资源到远程仓库,接下来我演示一下如何从远程仓库拉取代码库。
首先我们将D盘中之前创建的repository文件夹删除
在这里插入图片描述
接着执行命令$ git clone https://gitee.com/marco_zheng/mypro.git之后就可以从远程仓库拉取项目
Marco's Java【Git入门(四) 之 使用Git远程仓库上传及拉取项目】_第9张图片
此时我们再查看目录D:/git是不是就多了一个文件夹?

Marco@Marco-Laptop MINGW64 /d/git
$ ll
total 0
drwxr-xr-x 1 Marco 197121 0 823 17:54 mypro/

cat tuofeilun.txt 查看文件也没有问题
Marco's Java【Git入门(四) 之 使用Git远程仓库上传及拉取项目】_第10张图片
使用$ 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分联

Eclipse中使用Gitee

终于到了本次取经的目的地啦!如果我说之前咱们学习过的指令在实际开发中基本用不上时,在座的各位是不是要疯了!
哈哈哈,我这么苦口婆心的讲解,是为了让各位明白一个道理,任何一个可视化的界面操作的底层都是由这些操作指令构成的,当你熟悉并掌握了这些底层的指令,那么可视化界面上的操作对你而言就是小儿科!
所以说了解原理是最重要的,那么本节的最后,传授给大家最后一招了!把项目分享到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会自动去检索这个文件,因此配置过的朋友就不用重复配置啦!
在这里插入图片描述
Marco's Java【Git入门(四) 之 使用Git远程仓库上传及拉取项目】_第11张图片
第三步:Eclipse 配置 publicKey
同样的这一步操作之前在Gitee中的设置SSH公钥中已经做过了,因此也不需要配置,如果没有配置过的朋友,按照这个步骤操作可以获取publicKey Window --- Preferences --- General --- Network Connections --- SSH2 --- Key Management --- Generate RSA Key ---
Marco's Java【Git入门(四) 之 使用Git远程仓库上传及拉取项目】_第12张图片
第四步:在Gitee中配置用户SSH公钥
还是重复之前的步骤,这里我就不多赘述啦!
Marco's Java【Git入门(四) 之 使用Git远程仓库上传及拉取项目】_第13张图片
补充一: 为什么要配置用户 ssh key 而非项目ssh key?
项目的 sshkey 只针对项目,且我们仅对项目提供了部署公钥,即项目下的公钥仅能拉取项目,这通常用于生产服务器拉取仓库的代码。
用户的 key 则是针对用户的,用户添加了 key 就对用户名下的项目和用户参加了的项目具有权限,一般而言,用户的key具有推送和拉取的权限,而项目的 key 则只具有拉取权限。

补充二: 验证添加的 key 是否生效
在 Git Bash 中输入命令: ssh -T [email protected]
返回: Welcome to Gitee.com, xxx ! ---- 则表示添加key成功!如下

Marco's Java【Git入门(四) 之 使用Git远程仓库上传及拉取项目】_第14张图片
第五步:在Gitee中新建仓库
还是注意,仓库名称最好和项目名称保持一致!
Marco's Java【Git入门(四) 之 使用Git远程仓库上传及拉取项目】_第15张图片
第五步:Eclipse上创建一个项目
Marco's Java【Git入门(四) 之 使用Git远程仓库上传及拉取项目】_第16张图片
第五步:Eclipse项目分享到码云
选中项目gitee --- 右键 --- Team --- Share Project --- Git
Marco's Java【Git入门(四) 之 使用Git远程仓库上传及拉取项目】_第17张图片
紧接着进入到Configure Git Repository,创建一个本地仓库
Marco's Java【Git入门(四) 之 使用Git远程仓库上传及拉取项目】_第18张图片
以上步骤完成之后,我们会发现项目上多了很多,这表示工作区的资源和本地仓库中的资源不一致,这是很显然的,毕竟咱还没有commit…
Marco's Java【Git入门(四) 之 使用Git远程仓库上传及拉取项目】_第19张图片
接着咱们提交项目: 选中项目erp--- 右键 --- Team --- Commit并选择中要提交的文件添加到暂存区,注意这里的add index的意思就是将文件添加到暂存区stage
Marco's Java【Git入门(四) 之 使用Git远程仓库上传及拉取项目】_第20张图片
大家注意看右侧栏会发现有三个区域,第一个区间就是工作区,第二个区间就是暂存区,第三个区间就是咱们的提交到本地仓库的注释区,相当于之前的git commit -m "common"的操作。
Marco's Java【Git入门(四) 之 使用Git远程仓库上传及拉取项目】_第21张图片
提交资源到本地仓库之后,图标会变成黄色的圆柱体(表示仓库)。此时本地仓库是有资源了,但是还需要将资源上传至远程仓库,所以还没有结束,我们接着走。
Marco's Java【Git入门(四) 之 使用Git远程仓库上传及拉取项目】_第22张图片
右击选择push Branch master
在这里插入图片描述
将此前在Gitee创建的URI资源链接地址拷贝到URI处,注意下方有一个输入账号密码的区域(我这里没有展示出来),记得填写。完成上述操作后一路选择Preview就可以啦!
Marco's Java【Git入门(四) 之 使用Git远程仓库上传及拉取项目】_第23张图片
如果看到此界面,选择Push就可以上传到远程仓库了
Marco's Java【Git入门(四) 之 使用Git远程仓库上传及拉取项目】_第24张图片
成功之后,咱们查看Gitee,会发现项目已经成功上传!
Marco's Java【Git入门(四) 之 使用Git远程仓库上传及拉取项目】_第25张图片
第六步:将码云的项目拉取到本地Eclipse
上传咱们已经完成了,那么如何将项目拉进来呢?
为了示范,咱将刚才上传的项目在本地的Eclipse中删掉,然后依次执行下面的操作

首先找到项目地址,并复制链接地址
Marco's Java【Git入门(四) 之 使用Git远程仓库上传及拉取项目】_第26张图片
紧接着进入Eclipse,鼠标右击选择Import
Marco's Java【Git入门(四) 之 使用Git远程仓库上传及拉取项目】_第27张图片
选择Git中的Project from Git
在这里插入图片描述
然后选择Clone URI
在这里插入图片描述
然后粘贴刚刚复制过的资源链接URI地址
Marco's Java【Git入门(四) 之 使用Git远程仓库上传及拉取项目】_第28张图片
接着选择下载的Directory路径,注意了,这一步操作完成就直接Cancel掉,不要继续选择。
Marco's Java【Git入门(四) 之 使用Git远程仓库上传及拉取项目】_第29张图片
因为我们之前是Maven项目,因此导入项目的方式应该选择Maven
Marco's Java【Git入门(四) 之 使用Git远程仓库上传及拉取项目】_第30张图片
选择之前从远程仓库拖项目进来的路径
Marco's Java【Git入门(四) 之 使用Git远程仓库上传及拉取项目】_第31张图片
完成上述所有操作之后,咱们的项目就顺利拉取进来啦!
Marco's Java【Git入门(四) 之 使用Git远程仓库上传及拉取项目】_第32张图片

你可能感兴趣的:(Git)