文章目录
  1. 1. SSH keys
    1. 1.1. 介绍
    2. 1.2. 遇到的问题
    3. 1.3. 杂谈
  2. 2. GitHub
    1. 2.1. 入门
    2. 2.2. 两种 clone 方式
  3. 3. 心得及参考

以前玩 GitHub,懵懵懂懂啊朦朦胧胧,就记得,中间环节但凡求助于他人,即便最后弄好了,自己其实还是有些稀里糊涂。本周有项任务:用脚本定期从 GitHub上下载最新代码。于是,就借此机会,把这里搞清楚些。

你是否有过这样的经历:某次,自己在某处瞎转悠了一个多小时死都没找到目的地or地铁or公交站牌,甚是沮丧。可是,等你以后再去那儿时,会很熟悉,即便没有GPS也不怕迷路了。自己倒腾,虽然是有些费时费力,但,此阶段,到该自己摸索的时候了。

今天就先聊聊最爱出问题的权限问题,再科普下GitHub。

SSH keys

介绍

GitHub 上有详细的文档说明,里面介绍了如何查看本地的已有 SSH keys、如何创建一个新 SSH key、如何把它添加到 ssh-agent、如何添加到你的账户,以及一些常见问题。目录如下所示。

在页面上的入口,详见:

用法示例:

  1. 查看已经存在的 SSH keys
  2. 生成一个新的 SSH Key
  3. 并将其添加至 ssh-agent

遇到的问题

问题:授权的 key 被标识为只读,没法读取远程仓库
原因:是因为添加了多个 key
解决:清空,再重新添加,就好了。参考 stackoverflow 上的 Github authenticates but will not allow code push。整个过程,如下

很久之前也碰到过类似的问题,但原因不同。那次是因为没有用 SSH 克隆代码导致的,可参考 stackoverflow 上的 Configuring Git over SSH to login once
今天更新时,又碰到了类似的问题。解决方法是:在 github 上 key 的授权改成具有写权限的,即 “Read/write”

杂谈

  1. 生成的 SSH keys 是一对 public/private rsa (比如: id_rsa.pub 和 id_rsa),pub的传给git,private的本机留着
  2. 默认路径就是 C:\Users\anjia\.ssh,即 ~\.ssh
    如果你新输入了名字,那就会在当前目录下(要在默认路径下用新名字,那就只能用绝对路径)
    后面弹出的框,是要你设置密码的。默认为空,直接回车就好
  3. 查看本机目前所有的 public SSH key
    命令 $ ls -al ~/.ssh
  4. 一个 key 只能用于一个账户或者一个仓库;同样,一个仓库也只能有一个 key(key是指特定的一台机器。我碰到的情况就是:添加了2个key导致的权限问题)
  5. 默认情况,public keys 的文件名字是以下中的一个
    id_dsa.pub
    id_ecdsa.pub
    id_ed25519.pub
    id_rsa.pub(window)

关键词:

  1. 打开 Git Bash
  2. SSH key
  3. ssh-agent

.bash_history
.gitconfig

GitHub

入门

GitHub上有个专门的 文档说明 让你快速入门 Git 和 GitHub。不需要任何编码,单纯通过页面上的鼠标操作,就可以完成:创建一个仓库,开始一个分支,发表评论,开启一个拉取请求。

  1. 创建&使用一个仓库
  2. 开始&管理一个新的分支 branch
  3. 修改一个文件、并把它作为一个 commits 提交到 GitHub 上
  4. 打开&合并一个 pull request

关键词:

  1. GitHub:是一个代码管理平台,可以进行版本控制和多人协作
    Git:是一个版本管理的软件,GitHub就是建立在它上面的
  2. Master、Branch
  3. Pull Request:commit -> merge

两种 clone 方式

一个仓库,一般有两种方式去拷贝or下载,就是 HTTPS 和 SSH。

  1. HTTPS(prefer to use it)
    用 HTTPS 克隆,优点是方便。它是用 GitHub 的用户名和密码进行认证的。所以,每次提交的时候,都会提示你输入用户名和密码(当然也有相应的工具帮助缓存 GitHub 的账户信息,比如 credential helper )
  2. SSH
    它不需要输入用户名和密码,它是用 SSH key 认证的。值得一提的是,SSH key 和机器相关,等你换了一台机器的时候,就得重新生成并添加 SSH key。

心得及参考

心得就是:

  1. 有问题,就 stackoverflow 和 google 吧(一段时间没搜疑难杂症就又忘记了…)本次,谨记之
  2. 英文文档:不得不说,有时候还是英文文档读着更直观些,知道它到底在说什么(被翻译过来的…是会丢掉一些东西)
  3. GitHub 上的资料是真的挺全的。没有你想不到的,只有你没发现的…

https://guides.github.com/activities/hello-world/

//这里面有脚本
http://stackoverflow.com/questions/1595848/configuring-git-over-ssh-to-login-once

http://stackoverflow.com/questions/9560892/permissions-error-github-ssh-key-not-recognized
http://stackoverflow.com/questions/13306435/repository-access-denied-access-via-a-deployment-key-is-read-only
http://stackoverflow.com/questions/33467474/github-authenticates-but-will-not-allow-code-push

文章目录
  1. 1. SSH keys
    1. 1.1. 介绍
    2. 1.2. 遇到的问题
    3. 1.3. 杂谈
  2. 2. GitHub
    1. 2.1. 入门
    2. 2.2. 两种 clone 方式
  3. 3. 心得及参考