iOS 代码上传 GitHub - 命令行方式

iOS 代码上传 GitHub - 命令行方式_第1张图片
奇异博士

之前写了篇介绍 JSPatch 使用的文章,demo 已上传 GitHub 。这篇文章给大家介绍一下如何使用命令行将代码上传 GitHub (下篇文章会介绍使用 GitHub 客户端)。

创建远程代码仓库

首先你要有个 GitHub 账号,没有的话先到官网注册一个,账号有了后创建一个远程仓库 repository

iOS 代码上传 GitHub - 命令行方式_第2张图片
新建一个仓库

创建仓库需要填写的信息
iOS 代码上传 GitHub - 命令行方式_第3张图片
仓库信息

填写完之后点 Create repository 便成功创建仓库
iOS 代码上传 GitHub - 命令行方式_第4张图片

SSH Key

由于本地 Git 仓库和 GitHub 仓库之间的传输是通过 SSH 加密的,所以需要一点设置:
1、终端 cd ~/.ssh 命令查看有没有 .ssh 目录,如果有,再看看这个目录下有没有 id_rsa 和 id_rsa.pub 这两个文件(终端输入 pwd 命令可以查看 .ssh 目录)。如果没有 .ssh 终端你会看到 No such file or directory (看下一步创建)

查看有没有 .ssh 目录

iOS 代码上传 GitHub - 命令行方式_第5张图片
.ssh 目录

2、创建 SSH Key

$ ssh-keygen -t rsa -C [email protected] // 你注册 GitHub 账号时的邮箱

然后一路回车(让输入密码的地方不用输入)


iOS 代码上传 GitHub - 命令行方式_第6张图片
crete

如果一切顺利的话,可以在 .ssh 目录找到 id_rsa 和 id_rsa.pub 两个文件,这两个就是 SSH Key 的秘钥对,id_rsa 是私钥,不能泄露出去,id_rsa.pub 是公钥,可以放心地告诉任何人。现在把 id_rsa.pub 文件里的内容拷贝下来,可通过下面的命令 copy

$ pbcopy < ~/.ssh/id_rsa.pub

做个小补充

为什么 GitHub 需要 SSH Key 呢?因为 GitHub 需要识别出你推送的提交确实是你推送的,而不是别人冒充的,而 Git 支持 SSH 协议,所以,GitHub 只要知道了你的公钥,就可以确认只有你自己才能推送。
当然,GitHub 允许你添加多个 Key。假定你有若干电脑,你一会儿在公司提交,一会儿在家里提交,只要把每台电脑的 Key 都添加到 GitHub,就可以在每台电脑上往 GitHub 推送了。
最后友情提示,在 GitHub 上免费托管的 Git 仓库,任何人都可以看到喔(但只有你自己才能改)。所以,不要把敏感信息放进去。
如果你不想让别人看到 Git 库,有两个办法,一个是交点保护费,让 GitHub 把公开的仓库变成私有的,这样别人就看不见了(不可读更不可写)。另一个办法是自己动手,搭一个 Git 服务器,因为是你自己的 Git 服务器,所以别人也是看不见的。这个方法我们后面会讲到的,相当简单,公司内部开发必备。

ps:引用自廖雪峰的 Git 教程-远程仓库, 本文很多地方都有参考。搬个砖~

3、添加 SSH Key
回到你的 GitHub ,按下图操作


iOS 代码上传 GitHub - 命令行方式_第7张图片
Settings

iOS 代码上传 GitHub - 命令行方式_第8张图片
SSH and GPG keys

iOS 代码上传 GitHub - 命令行方式_第9张图片
Add SSH Key

SSH key就添加完成了,如图(尚未确认连接,所以是灰色的)


iOS 代码上传 GitHub - 命令行方式_第10张图片

回到终端,输入
$ ssh -T [email protected]

回车,确认连接,刷新网页(颜色变绿)


iOS 代码上传 GitHub - 命令行方式_第11张图片

注:当你第一次使用 Git 的 clone 或者 push 命令连接 GitHub 时,会得到一个警告:

The authenticity of host 'github.com (*********)' can't be established.
RSA key fingerprint is **************************
Are you sure you want to continue connecting (yes/no)?

这是因为 Git 使用 SSH 连接,而 SSH 连接在第一次验证 GitHub 服务器的 Key 时,需要你确认 GitHub 的 Key 的指纹信息是否真的来自 GitHub 的服务器,输入 yes 回车即可,如果你创建 SSH key 的时候设置了密码,会提示你输入密码,输入即可(因为我们创建时没有设置所以不需要输入)

Enter passphrase for key '/c/Users/xxx/.ssh/id_rsa':  // 密码

当看到下面的话恭喜你验证成功!

Hi xxx! You've successfully authenticated, but GitHub does not provide shell access.
代码上传

现在我们就可以把代码 push 到 GitHub 了,在这之前我已经创建了一个项目" GitHubTest" (跟 GitHub 上创建的仓库名称要一致)放在了 Desktop 。
1、建立本地仓库:打开终端,cd 到项目目录,回车,git init 命令将这个目录变成可以使用 Git 管理的仓库

$ git init

回车之后会发现目录下多了一个 .git 的目录,这个目录是 Git 来跟踪管理版本库的,没事不要手动修改这个目录里面的文件,否则可能会破坏仓库。.git 目录默认是隐藏的,用 ls -ah 命令就可以看见。

iOS 代码上传 GitHub - 命令行方式_第12张图片

3、将项目中所有文件添加到本地仓库中(如果只想添加某个特定的文件,把 . 换成特定的文件名即可, git add 的更多用法可自行百度)

$ git add . 

4、将添加的文件 commit 到仓库中(-m 后面输入的是本次提交的说明,方便以后找到改动记录)

$ git commit -m "firstCommit"

5、回到 GitHub 复制下面红框中的地址


iOS 代码上传 GitHub - 命令行方式_第13张图片
复制url

终端执行如下命令,将 Git 本地仓库和 Github 远程仓库关联起来

$ git remote add origin [email protected]:MixedTwo/GitHubTest.git  // 记得换成自己的地址

3 ~ 5步的终端操作

iOS 代码上传 GitHub - 命令行方式_第14张图片
3 ~ 5

注:你也许还注意到,GitHub 给出的地址不止一个,还可以用https://github.com/MixedTwo/GitHubTest.git 这样的地址。实际上,Git 支持多种协议,默认使用 SSH,但也可以使用 HTTPS 等其他协议。

HTTPS 和 SSH 的区别:

1、前者可以随意克隆 github上的项目,而不管是谁的;而后者则是你必须是你要克隆的项目的拥有者或管理员,且需要先添加 SSH key ,否则无法克隆。
2、HTTPS url 在push的时候是需要验证用户名和密码的;而 SSH 在 push 的时候,是不需要输入用户名的,如果配置 SSH key 的时候设置了密码,则需要输入密码的,否则直接是不需要输入密码的。

6、上传之前,要先 pull 一下,执行如下命令

$ git pull origin master

会出现下面的界面,可以写 pull 的信息


iOS 代码上传 GitHub - 命令行方式_第15张图片

具体操作按如下步骤:

Git 在 pull 或者合并分支的时候有时会出现这个界面。如不需要填写,按3、4步操作:
1.按 i 进入 insert 模式
2.修改最上面那行黄色合并信息(可以不修改)
3.按"Esc"
4.输入 :wq ,回车即可(注意:冒号在英文键盘模式下输入)

7、最后一步,push 代码到 GitHub 远程仓库

git push -u origin master
iOS 代码上传 GitHub - 命令行方式_第16张图片

回到 GitHub 查看,ok,perfect!


iOS 代码上传 GitHub - 命令行方式_第17张图片
上传成功
补充

如果要删除 GitHub 上的项目,先选择要删除的项目-->Settings

iOS 代码上传 GitHub - 命令行方式_第18张图片

然后找到这个地方,点击 Delete this repository
iOS 代码上传 GitHub - 命令行方式_第19张图片

输入你的项目名称
iOS 代码上传 GitHub - 命令行方式_第20张图片
删除项目

结语

文中难免会出现错误和疏漏的地方,欢迎指正、交流。

参考文章:廖雪峰 Git教程

你可能感兴趣的:(iOS 代码上传 GitHub - 命令行方式)