本文主要介绍git本地仓库和GitHub远程仓库之间的交互和数据传输。
注:首先需要到github.com上注册一个账号。
1. 添加本地SSH Key到GitHub
要向GitHub远程仓库推送代码之前,需要做一个认证,即需要让GitHub知道向它推送代码的电脑是一个可以信赖的电脑。这就需要往GitHub上添加一个可以标示出本地电脑的SSH Key,然后才能往GitHub上推送代码。
1. 在本地生成一个SSH Key公钥和私钥
在任意目录下执行下面这条命令,执行完之后一路按回车即可:
ssh-keygen -t rsa -C "yourgit@test.com"
注:"yourgit@test.com"即为注册的GitHub账号邮箱地址。如果要在Windows下执行这个命令,必须在Git Bash窗口中执行,在Windows自带的cmd窗口中是没有这个命令的。
2. 切换到本地用户主目录:cd ~
此时在~目录用ls -al
命令可以看到 一个.ssh隐藏目录
在.ssh目录中有两个密钥文件:id_rsa(私钥)、id_rsa.pub(公钥),用vim或gedit打开公钥文件,复制其中的文本内容。
注意:原模原样复制,不要加任何多余的空格或空行。
3. 在GitHub创建SSH Key
用第1步中的GitHub账号从浏览器登录GitHub,点击右上角——>settings——>SSH and GPG Keys页面,点击创建一个SSH Key,标题可以随意写,将刚刚复制的公钥内容复制到"key"文本框中,并点击"Add SSH Key“按钮,这样就添加好了SSH Key。同一台电脑往一个GitHub账号只需添加一个SSH Key即可。
注:
(1)允许添加多个SSH Key到同一个GitHub账号,这样就允许比如说我在家写了代码想推送到自己的GitHub账号上,同时也允许我在公司写完代码也可以推送到我的GitHub账号上去(如果公司允许的话)。
(2)在GitHub上托管的公开代码仓库任何人都可以看到内容,但不可做修改(只有添加了SSH Key才可以做修改)。
(3)要想不让别人看到自己的GitHub仓库的内容,有2种方法:第一种是向GitHub付费申请私有仓库,第二种是自己搭建一个git服务器。对于第一种,我的理解是GitHub本来就是一个倡导开源的组织,要想免费使用它的平台就要贡献出来一些东西(即开源自己的代码),如果不想开源那就要收费了(因为你没有贡献出来什么东西给大家)。
2. 提交本地代码到远程库
假如本地已经有了一个git仓库:learngit,现在想要把这个仓库的代码推送到GitHub上去,步骤如下:
1. 在GitHub上创建一个远程库
点击页面右上角的一个"+"按钮,创建一个空的远程仓库:learngit。
2. 建立本地库与远程仓库的联系
在本地learngit仓库目录下执行命令:
git remote add origin git@github.com:xxx/learngit.git
注:这是用SSH的方式进行推送,其中origin为默认的远程仓库名,xxx为你的邮箱账号名(@之前的字符串),learngit为刚刚第1步创建的远程仓库名。除了SSH的推送方式外,还有HTTPS的方式,但SSH的方式速度更快。最后的'.git'是一定要带上的。
补充:
查看本地仓库和远程仓库的联系信息:git remote -v
删除本地库与远程库的联系:git remote remove origin
3.拉远程仓库代码到本地
如果远程仓库创建了README.md等文件,那么先要把远程的文件拉到本地,否则下一步push的时候不会成功:
git pull origin master:master
注:此命令表明把远程的master分支拉到本地的master分支,前一个master指的是远程的master分支。
4. 推送代码
建立和远程仓库的联系后,就可以将本地仓库当前分支的代码推送到远程仓库了。将本地仓库的master分支的内容(默认分支为master)推送到远程库对应的分支上(master分支):
git push -u origin master
注:首次推送要加-u
参数,后面再推送就可以不加了,因为这第一次已经建立了和远程仓库的追踪链接,所以可以直接用:git push origin master
3. 从远程仓库克隆到本地
1. 创建远程仓库
在github上创建一个远程仓库:gitskills,并在创建时候顺便初始化一个readme.md文件
注:在创建远程仓库的时候,同时也可以创建.gitignore文件(有现成的各种语言的.gitignore文件可以选),也可以创建license文件。
2. 克隆远程库到本地
在本地任一目录下执行:
git clone git@github.com:xxx/gitskills.git
3. 成功克隆远程代码到本地
此时发现当前目录下多了一个gitskills目录,进去之后就可以看到第1步中创建的readme.md文件了
4. 其他下载方式
git远程库的其他下载方式:https,zip压缩包,但还是属ssh方式速度最快
随机推荐
-
C#装箱和拆箱(值类型和引用类型之间的转换)
面向对象编程中,封箱指把非对象类型的数值或数据,包装成对象类型反之,拆箱指把对象类型拆成非对象的数值或数据. 例子:定义一个Circle 类 class Circle { double radius; ...
-
利用百度地图开源sdk获取地址信息。
注册百度开发者帐号,下载相关sdk 添加权限: 添加百度注册访问应用(AK)码 添加源代码文件到libs文件: 代码如下: package com.lixu.baidu_gps; import com ...
-
Linux文件系统的主要目录结构说明及分区方案
Linux操作系统有一些固定的目录.各种Linux发行版的目录结构虽然不会一模一样,但是不会有很大差异.知道了这些目录的作用,不仅对你进行磁盘分区规划很有帮助,而且会让你以后的日常维护工作变得轻松.只 ...
-
codeforces 651A Joysticks
A. Joysticks time limit per test 1 second memory limit per test 256 megabytes input standard input o ...
-
Java 继承详解
什么是继承? 多个类中存在相同属性和行为时,将这些内容抽取到单独一个类中,那么多个类无需再定义这些属性和行为,只要继承那个类即可. 多个类可以称为子类,单独这个类称为父类.超类或者基类. 子类可以直接 ...
-
自定义ListView分割线
要完成自定义分割线,我们先来认识一下listview中的两个属性: android:divider 设置list 列表项的分隔条(可用颜色分隔,也可用Drawable分隔) android:divid ...
-
设置Proxy Server和SQL Server实现互联网上的数据库安全
◆首先,我们需要了解一下SQL Server在WinSock上定义协议的步骤: 1. 在”启动”菜单上,指向”程序/Microsoft Proxy Server”,然后点击”Microsoft Man ...
-
Jquery 获取IP地址
//获取ip和地址 $(function () { var url = 'http://chaxun.1616.net/s.php?type=ip&output=json&callba ...
-
饥饿的牛(hunger)
饥饿的牛(hunger) 题目描述 牛在饲料槽前排好了队.饲料槽依次用1到n(1≤n≤2000)编号.每天晚上,一头幸运的牛根据约翰的规则,吃其中一些槽里的饲料.约翰提供B个区间的清单.一个区间是一对 ...
-
linux安装navicat全程记录
国庆期间自己在试着用linux(ubuntu),献上navicat安装方法,以及很多教程里没有写的一些小东西 step1: 去navicat官网下载安装包,网址:http://www.navicat. ...