SSH免密上传本地项目到GitHub for mac

楔子

试想以下两种场景:

  • 场景一
    《鹿鼎记》中青木堂香主韦小宝每次见手下都要来两句:
    ** 地震高岗,一派西山千古秀,**
    ** 门朝大海,江河河水万年流。**
    这还是短的,有的暗号更长,说错一个字或顺序不对都要从头再来,韦小宝想明明已经很熟了还要每次都来这套,你说烦不烦,肯定烦,但为了反清复明的大业,韦香主你就忍了吧!!!
  • 场景二
    时光穿梭到了现代,《伪装者》的军统特工或地下党们为了在公众场合掩人耳目,便以胸前插支或用两半撕开的纸币接头交换情报,既能验证双方身份又快速简洁不易察觉!!!

很显然,以上两种场景中后者在现实使用中更优,体现谍者随时代发展而进步。
身份验证古往今来都不可或缺,场景一就像每次我们做事前都要原班输入账号密码一样繁琐又无奈;场景二就是这种无奈之下的改进措施,由账号-密码转化为SSH免密登陆。

SSH密钥对采用的是RSA非对称加密算法,而由账户-密码方式的身份验证到SSH免密登录绝不仅仅是技术上应用,更是设计思想的巧妙运用。我们在做技术的过程中遇到的问题往往是有多种解决方案,就是“怎么着都行”,而在这多种方案的比较、分析中往往能迸发出奇妙创新的思维火花,也就是换个思路问题竟如此简单的那种极爽的感觉,这就是程序员的快乐!!!

笔者在此就以上传本地项目到GitHub为例子,假设读者朋友们没有任何账号+没有装载任何客户端,期望能让大家吃着火锅唱着歌就能把事儿给办了。

一、安装Git

  1. Git命令行版本 从terminal即终端输入命令进行操作。
  2. Git可视化管理工具 可视化页面点点鼠标就能完成各项操作,建议使用SourceTree,程序员喜闻乐见的git可视化工具。

根据笔者经验,命令行操作没有SourceTree等可视化工具操作方便、简洁、直观,但是一步一步的命令行更便于我们理解git版本控制的原理,还可以做一些更细致的操作。本人一般都是用命令行提交、拉取、合并代码,但是用SourceTree查看提交记录和冲突部分的代码,非常直观。

二、GitHub部分

1. 注册GitHub账号

登陆GitHub官网,按引导注册即可

注册GitHub账号

2. 创建 respository(代码仓库)

建好的代码仓库自带.git文件进行仓库管理,即我们常说的版本控制,respository存放并管理着库内所有文件、资源、代码的存取、更新、记录等,和现实中物流仓库功能很相似。

无图无真相,观众朋友们按图索骥就行了。

创建仓库
配置仓库信息
仓库创建完成

3. 建立本地与GitHub的交互通道

说白了,GitHub上我们建立的是开源项目,也就是人人看得见,摸得着(都能下载、克隆),但只有本账号持有者才有更改的权限(人人都能直接改就乱套了)。现在问题来了:GitHub怎么识别账号持有者呢?

3.1. GitHub上直接操作

很显然这种方式是通过账号-密码的形式直接从官网进行操作的,看似简单直接,但看看就行了,因为不支持文件夹,这对单独或简单创建和上传少许文件比较适用,而我们的项目数不胜数的文件文件夹,显然不行。

github直接操作

3.2. GIt可视化工具管理仓库文件

利用Git可视化工具如SourceTree进行代码操作,每次push操作时都会验证用户合法性,即需要输入相应GitHub账号-密码。

3.3. SSH免密登陆

简单点说就是,用自己的电脑生成了一对密钥对,私钥文件留在本机特定地方,公钥放在GitHub特定地方,每次进行网路交互时,一旦双方密钥能对上,就说明用户身份有效。有兴趣的同学可看看下面文章:
ssh 免密码登录

账号-密码式的用户验证方式就像是每次见面都先来一通“天王盖地虎”的说道,不烦才怪。而SSH免密验证就像是双方拿着两半撕开的纸币,合上即代表自己人,一切尽在不言中,是不是酷毙了!!!

3.3.1. .ssh文件

cd ~/.ssh/,若无此文件夹需要创建一个 mkdir .ssh

3.3.2. 创建SSH密钥对

~/.ssh/目录下,ssh-keygen -t rsa -C "your_email@example.com" 后面“ ”里面改成你的邮箱就行,回车会提示你输入密钥文件名,然后输入密码什么的,既可以根据提示设置,也可以无视一直回车下去。

3.3.3. 将SSH密钥公钥放进GitHub

open . 打开.ssh,找到公钥文件(.pub)打开复制其文本内容
登陆GitHub,进入Settings

1. 进入设置
2. 添加SSH公钥
3. 配置SSH公钥信息
4. 公钥添加成功
3.4. 测试SSH密钥设置是否成功

ssh -T git@github.com

bogon:test2 guoxiangyang$ ssh -T git@github.com
Permission denied (publickey).

修改了密钥文件名之后就行了:

bogon:~ guoxiangyang$ ssh -T git@github.com
Hi guoxiangyang110! You've successfully authenticated, but GitHub does not provide shell access.

经验证SSH密钥文件名不是id_rsa 和 id_rsa.pub好像是不行,知道原因的同学还请指教一二。

三、上传本地项目到GitHub

1. 克隆代码仓库

cd 到存储代码仓库的目录

// 根据自身情况跟换后面的代码仓库目录
git clone git@github.com:guoxiangyang110/HelloWorld.git

之后同样有2条路可以走

  • git可视化工具
    将clone下来的代码仓拖拽到SourceTree工程列表中,然后进行各种操作
  • git命令行
常用命令 作用
git init git 仓库初始化
git add 添加文件至git缓存
git commit 提交文件到本地代码仓库
git push 提交更新到远程(GitHub
bogon:HelloWorld guoxiangyang$ git init
Reinitialized existing Git repository in /Users/guoxiangyang/Desktop/Test/HelloWorld/.git/
bogon:HelloWorld guoxiangyang$ git add .
bogon:HelloWorld guoxiangyang$ git commit -m "first commit"
On branch master
Your branch is up-to-date with 'origin/master'.
nothing to commit, working directory clean
bogon:HelloWorld guoxiangyang$ git push origin master:master
Everything up-to-date

2. 上传本地项目

只需将本地项目添加到clone下来的代码仓库里,然后用SourceTree或命令行addcommitpushGitHub即可。

四、删除GitHub上的代码仓库

操作简单但一开始不太好找,以图说明:

进入项目设置

翻滚到左下方,点击确定删除


删除项目

输入要删除的仓库名称,确定删除


删除特定项目

他山之石

本文特别感谢包括并不限于以下优秀文章:
http://www.open-open.com/lib/view/open1454507333214.html
http://blog.csdn.net/leikezhu1981/article/details/47664215
http://www.jianshu.com/p/9c918d96f941

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

推荐阅读更多精彩内容