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

奇异博士

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

创建远程代码仓库

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

新建一个仓库

创建仓库需要填写的信息
仓库信息

填写完之后点 Create repository 便成功创建仓库

SSH Key

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

查看有没有 .ssh 目录

.ssh 目录

2、创建 SSH Key

$ ssh-keygen -t rsa -C youremail@xxx.com // 你注册 GitHub 账号时的邮箱

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


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 ,按下图操作


Settings

SSH and GPG keys

Add SSH Key

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



回到终端,输入
$ ssh -T git@github.com

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



注:当你第一次使用 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 命令就可以看见。


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

$ git add . 

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

$ git commit -m "firstCommit"

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


复制url

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

$ git remote add origin git@github.com:MixedTwo/GitHubTest.git  // 记得换成自己的地址

3 ~ 5步的终端操作

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 的信息



具体操作按如下步骤:

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

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

git push -u origin master

回到 GitHub 查看,ok,perfect!


上传成功
补充

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


然后找到这个地方,点击 Delete this repository

输入你的项目名称
删除项目

结语

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

参考文章:廖雪峰 Git教程

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,390评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,821评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,632评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,170评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,033评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,098评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,511评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,204评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,479评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,572评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,341评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,213评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,576评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,893评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,171评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,486评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,676评论 2 335

推荐阅读更多精彩内容