前面咱们介绍的全部操做都是在本地仓库完成的,本文咱们主要来看看如何和远程仓库进行交互,为了方便起见,这里远程仓库咱们选择GitHub。 git
本文是Git系列的第五篇,了解前面的文章有助于更好的理解本文:github
1.Git概述
2.Git基本操做
3.Git中的各类后悔药
4.Git分支管理ssh
SSH KEY的配置不是必须的,不配置的话咱们就只能使用HTTPS协议,这样每次提交时要输入用户名密码,略麻烦,因此仍是配置一下。配置SSH KEY的原理很简单,采用非对称加密方式生成公钥和私钥,公钥告诉GitHub,私钥留在本身电脑上(私钥不可泄露),当咱们向GitHub上提交数据时,GitHub会用咱们留给它的公钥加密一段消息返回给咱们的电脑,若是咱们可以用私钥解密成功,说明是合法的用户,这样就避免咱们输入用户名密码了。大体的原理就是这样,如今不少免登陆的系统都采用了这种方式,好比Hadoop免登陆配置也是这样。那咱们就来看看这个SSH KEY要怎么生成。 oop
查看当前用户目录下是否有.ssh文件,以下: 加密
若是查看以后有结果,则直接跳转到第四步,什么都没有就继续生成。spa
生成SSH指纹的命令很简单,以下:code
ssh-keygen -t rsa -b 4096 -C "你的邮箱地址"
注意邮箱地址要替换。blog
执行以下命令便可:图片
eval "$(ssh-agent -s)"
OK,作好这一切以后,咱们当前用户目录下已经有了一个名为.ssh的隐藏文件夹了,打开这个目录,会发现有一个名为id_rsa.pub的文件,这就是咱们一会要使用的公钥文件。rem
登陆GitHub,点击右上角的向下的箭头,选择Settings,在新打开的页面中左边侧栏选择SSH and GPG keys,以下:
完了以后点击最下面的Add SSH key按钮便可,如此以后,咱们的SSH KEY就配置成功了。
接下来咱们在GitHub上建立一个仓库,登陆成功以后,直接点击右上角绿色的New repository按钮,以下:
其实这里咱们只须要填一个版本仓库的名字,我填了test,填好以后,点击Create repository就OK了。
建立成功以后,咱们会看到仓库的地址,以下:git@github.com:lenve/test.git
,而后我须要将咱们以前的本地仓库和这个远程仓库进行关联,使用git remote add命令,以下:
$ git remote add origin git@github.com:lenve/test.git
在这条命令中,git会自动将远程仓库的名字设置为origin,方便咱们的后续操做。
假设我想将本地master分支上的内容推送到远程master分支上,方式以下:
$ git push -u origin master
-u参数能够在推送的同时,将origin 仓库的master 分支设置为本地仓库当前分支的upstream(上游)。添加了这个参数,未来运行git pull命令从远程仓库获取内容时,本地仓库的这个分支就能够直接从origin 的master 分支获取内容,省去了另外添加参数的麻烦。这个参数也只用在第一次push时加上,之后直接运行git push命令便可。
若是想推送到其余分支,仍是这条命令,修改一下分支的名字便可,好比我也想把个人fa分支推送到远程仓库中,执行以下命令:
$ git checkout fa $ git push -u origin fa
先切换到fa分支,而后执行git push命令,参数含义和以前的同样,这里咱们建立的远程仓库的分支名也为fa(固然咱们能够取任何名字,可是为了避免混淆,最好取一致的名字)。这两条命令执行成功以后,此时在网页中咱们就能够看到已经有多个分支了,以下:
刚刚是咱们向远程仓库提交数据,有提交固然就有获取,咱们能够经过git clone命令克隆一个远程仓库到本地,方式也简单,在本地建立一个空文件夹,执行以下命令:
$ git clone git@github.com:lenve/test.git
表示克隆文件到本地仓库。此时克隆的远程仓库的master分支到本地仓库,咱们能够经过git branch -a来查看本地仓库和远程仓库的信息,-a参数能够同时显示本地仓库和远程仓库的信息,以下:
咱们看到远程仓库中已经有了fa分支了,若是咱们想把fa分支也克隆下来,执行以下命令:
$ git checkout -b fa origin/fa
表示根据远程仓库的fa分支建立一个本地仓库的fa分支,建立完成以后进行切换,也能够经过以下命令只建立不切换:
$ git branch fa origin/fa
此时我在fa分支下修改git01.txt文件并提交,以下:
注意因为fa分支就是从远程仓库克隆下来的,因此这里能够不添加-u参数。
此时咱们回到第一次最先的那个test本地仓库中,那个test仓库的fa分支如今和远程仓库不一致了,咱们能够经过git pull命令来更新,以下:
Ok,关联远程仓库咱们先说这么多。有问题欢迎留言讨论。
参考资料:
1.《GitHub入门与实践》
2.《Pro Git》
更多JavaEE和Git资料请关注公众号: