# Github入门

学习来源:慕课教程

# 安装与配置

git --version  

验证是否安装成功,如果安装成功,会显示 git 版本号。
因为我的电脑本身就安装了git,所以查看版本后,直接跳过了安装这一步。

git config --global user.name "username"  
git config --global user.email "email" 

将 username 和 email 换成 github 的用户名和密码, 配置完成后执行命令 git config --list,可以查看现在的配置信息。

# ssh key 密钥

输入 cd ~/.ssh,进入到目录后输入ls ,查看是否存在密钥。

一般有两个密钥。id_rsa 文件是私钥,不需要上传,id_rsa.pub 文件是公钥,是需要上传的。

如果没有,则需要手动生成,通过下面的命令生成 ssh key:

ssh-keygen -t rsa -C "youremail@example.com"

这里的邮箱可以就填你 github 绑定的邮箱,然后一直回车即可完成当前步骤。

登录 Github,打开 setting -> SSH keys,点击右上角 New SSH key。 把生成好的公钥 id_rsa.pub 放进 key 输入框中,再为当前的 key 起一个 title 即可。

# 把在github上建立的仓库放到本地

进入到仓库,点击“Clone or download”,复制仓库地址 输入git clone,然后点击鼠标右键,把我们刚才复制的仓库地址粘贴在这里,按下回车后代码就可以下载到本地文件夹下面了。

# 修改并上传

# git add

完成修改后,第一步,需要将修改的文件添加到暂存区。

git add <path> 

把指定的具体文件添加到暂存区

git add .

把所有修改的文件都添加

# 为啥要有暂存区?

有时候你一次性修改了许多文件,然而其实这些文件,有些跟需求 A 有关,有些跟需求 B 有关,因为实际工作中,大多数时候我们都是多个需求并行开发的,明明是两个独立的需求,你一次就把所有修改的文件全部提交上去了,那么就不能保证提交历史的清晰。

所以这时候文件的选择就可以交给暂存区去做,每一次提交都是一个完整的功能开发,保证提交历史干净清晰。

# git commit

将暂存区里的文件给提交到本地的版本库

git commit -m "message"

message的内容是本次提交的说明

# 小技巧 --help

如果当你使用某个命令不知道要加什么参数的时候,可以使用 help 命令。
例如这里,使用git commit --help,就可以跳转到官网相关文档。

# git push

在使用git commit命令将修改从暂存区提交到本地版本库后,
只剩下最后一步将 本地 版本库的分支推送到 远程服务器 上对应的分支了。

git push origin <远程分支名>

如果该远程分支不存在,则会被新建。
如果当前分支只有一个远程分支,那么命令可以直接简化成git push

# 向开源库贡献代码

# fork、clone、添加

先 fork 到自己的仓库。一般情况下,别人的仓库,我们是没有权限直接向他们的分支提交代码的,所以要先 fork 到自己的仓库。

将刚才 fork 的代码 clone 到本地,然后进入到项目目录,添加原项目地址:
(以ant-design 的 git 地址为例)

git remote add upstream https://github.com/ant-design/ant-design.git

大多数情况下,在自己开发过程中,原项目也在不断的更新,所以要添加远程项目地址,方便随时和原项目代码保持同步。

# 获取最新代码

git pull upstream master

# 创建分支

git checkout -b

大多数情况下,我们不会直接修改 master 分支,而是根据修改的内容新建分支。
比如你是想修改 bug 则可以创建一个 bugfix 分支;你是想新增特性,可以创建一个 feature 分支。
分支取名最好有意义,而且简洁,例如可执行如下命令:

git checkout -b bugfix

接下来我们就可以在新分支上修改代码,修改完成后提交 commit 到代码库。

# 合并修改

当你修改完成的时候,原项目代码可能已经更新过了,所以在这里,就需要我们同步一次,不然到时候合代码可能会产生冲突而不允许合入。

首先切换到 master 分支,执行如下命令:

git checkout master

然后,同步最新的远程代码:

git pull upstream master

然后切回到 bugfix 分支:

git checkout bugfix

把 master 分支的最新 commit 合并到 bugfix 分支:

git rebase master

最后,就可以把现在的代码 push 到远端的 bugfix 分支了:

git push origin bugfix

# 提交 Pull Request

可以进入到你自己的远端项目主页,点击 New pull request 按钮,然后选择你的 bugfix 分支和原项目仓库的 master 分支,提交申请,等待作者进行代码 review 并合并。
如果 review 不合格,作者会提示你修改,按照作者的提示修改好后重新提交代码即可。

# GitHub Pages

我们可以把项目代码写好后上传 GitHub,然后利用 GitHub Pages 为这个项目生成一个静态页面,别人通过网址可以访问我们的页面。

优点:

  1. 免费,不需要再购买云服务,就可以搭建个人网站;
  2. 简单,步骤简单,只需要按着教程一步步来,无需关注技术细节;
  3. 功能多,生态链丰富,你可以绑定自己域名,使用免费 https,还能使用现成的主题,插件等;
  4. 省心,只需要负责搭建,不需要关心如何维护之类的。

作为免费的服务,当然也有一些限制:
在使用的时候项目和网站的大小不要超过 1 GB,每个月的带宽使用上限为 100 GB。

# 一些技巧

# fork,star,watch

  1. 想拷贝别人项目到自己帐号下就fork一下;
  2. 持续关注别人项目更新就star一下;
  3. watch是设置接收邮件提醒的。

# 搜索技巧

假设我的项目中要使用一个可以随意拖拽的组件,而且我的项目是基于 React 技术栈,想在 GitHub 上面找下有没有现成的组件可以使用。

  1. 明确关键字:drag react
  2. 语言类型:比如,我项目里面用到的是 Typescript,就可以在左边 Languages 模块点击 Typescript 标签
  3. 排序:Best match 或者 Most stars

按着排序的结果依次点进去看看,绝大多数情况下,我们都可以在排名靠前的几个搜索结果里面找到我们想要的项目。

# 快捷键

  1. shift + ? 在 GitHub 页面中按下 shift + ? 则可以调出快捷键页面
    (注意:经过测试,要在英文输入法下使用才能调出)

  2. 最常用的:s键或/键,直接定位到搜索框。

  3. 快捷键 t 堪称查看源代码的神器。 当你在查看开源项目的源码时,在目录结构的页面中按下 t ,页面会发生变化,进入文件查找模式。

  • 什么叫文件查找模式? 比如,我想查找这个项目里面跟 button 有关的文件,那我们不妨进入文件查找模式,输入 “button” 试试。
    之后,下面的文件列表列出来的都是跟 button 有关的文件,这样就能快速定位到我们想要查看的文件。

# 代码高亮、标注单行代码

  1. 代码高亮:
    只需要在发给别人的 GitHub 链接后面加上 #L 和行号就行了。
    例如,我想把第 4 行标记出来,则需要在链接最后面加上#L4

  2. 标注单行代码 标注多行代码,需要用 “-” 连接起来即可,例如我想标记第 4 行到第 6 行,则链接后面需要加上#L4-L6