码农的世界iOS Developer工具癖

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

2017-06-14  本文已影响207人  蓝色小石头

楔子

试想以下两种场景:

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

上一篇下一篇

猜你喜欢

热点阅读