0.如何解决国内无法访问github

GitHub 是最大的同性交友网站(通过 Git 进行版本控制的软件源代码托管服务平台),许多优秀的项目代码均可以从 GitHub 上面获取,但是由于一些不可抗力因素导致国内访问 GitHub 有时候较为困难,具体表现是无法连接或者页面加载缓慢。许多位于国内的服务器使用 wget 或者类似命令从 GitHub 上拉取代码时很大概率会出现无法连接或者拒绝连接的错误,这类错误是由于 DNS 服务器解析了错误的 GitHub 的 IP 地址所导致的,下面教大家如何解决这个问题。

在服务器的 Hosts 文件中加入正确的目标服务器 IP 即可解决

  • 查询IP地址

    可以自行到这个网址输入对应域名查找 IP

    两个域名

    • raw.githubusercontent.com
    • github.com
  • 将查询结果加入到/etc/hosts

    1
    2
    3
    4
    5
    vim /etc/hosts

    185.199.108.133 raw.githubusercontent.com
    20.205.243.166 github.com
    #插入到文件末尾即可

1.添加SSH KEY

  • 按如下命令来生成 sshkey:

    1
    ssh-keygen -t rsa -C "xxxxx@xxxxx.com"

​ 按照提示完成三次回车,即可生成 ssh key。通过查看 ~/.ssh/id_rsa.pub 文件内容,获取到你的 public key

  • 查看

    1
    2
    cat ~/.ssh/id_rsa.pub
    # ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC6eNtGpNGwstc....

    值得一提的是,一个公钥可以同时添加到Github或者gitee上面,不需要多个key

  • 在Github或者Gitee上添加公钥

    1
    2
    3
    Gitee:复制生成后的 ssh key,点击头像--设置--SSH公钥(如图所示)添加生成的 public key

    Github:登录到GitHub,选择settings ,选择Add SSH key,把.pub的内容复制到里面即可。
  • 添加后,在终端(Terminal)中输入

    1
    2
    3
    ssh -T git@gitee.com

    ssh -T git@github.com

    首次使用需要确认并添加主机到本机SSH可信列表。若返回

    1
    Hi XXX! You've successfully authenticated, but Gitee.com does not provide shell access.

则证明添加成功。

2.git clone

1
2
3
用法:git clone [url]

该命令可用于通过指定的URL获取一个代码库。

3.git add

该命令可以将一个文件或者文件夹添加至stage(暂存区)

1
用法:git add [file] or [floder]

一下命令可以将多个文件添加至stage(暂存区)。

1
2
3
4
5
git add *

git add all

git add .

4.git remote

你可以通过该命令将本地的代码库连接到远程服务器

1
git remote add [variable name] [Remote Server Link]

值得注意的是:同一个本地repo,可以关联到多个远程repo,只需要多次添加就可以了。

eg:有一个本地仓库,我希望同时同步到github和gitee上去,此时我们可以按如下三步

  • 先删除已关联的名为origin的远程库

    1
    git remote rm origin
  • 先后关联GitHub的远程库

    1
    2
    git remote add github git@github.com:loveXMTX/demo.git
    git remote add gitee git@gitee.com:loveXMTX/demo.git
  • 列出详细信息,在每一个名字后面列出其远程url

    1
    git remote -v

5.git commit

该命令可以在版本历史记录中永久记录文件

1
2
3
git commit -m “[ Type in the commit message]”

#怎么说呢,目前我还没有理解到这个commit的精髓

6.git push& git pull

将主分支上提交的变更发送到远程代码库

1
用法:git push [variable name] master

将所有分支发送到远程代码库

1
用法:git push –all [variable name]

设置远程分支

1
2
#origin/remote_branch是你本地分支对应的远程分支;your_branch是你当前的本地分支。
git branch --set-upstream-to=origin/remote_branch your_branch

该命令将获取远程服务器上的变更,并合并到你的工作目录

1
用法:git pull [Repository Link]

7. git config

在git中,我们使用git config 命令用来配置git的配置文件,git配置级别主要有以下3类:

    1. 仓库级别 local 【优先级最高】

    git 仓库级别对应的配置文件是当前仓库下的.git/config

    在当前目录下.git目录默认是隐藏的,所以在文件管理器中我们要打开显示以藏文件)

  • 2.用户级别 global【优先级次之】

    git 用户级别对应的配置文件是用户宿主目录下的~/.gitconfig

  • 3.系统级别 system【优先级最低】

    git系统级别对应的配置文件是git安装目录下的 /etc/gitconfig

那么config配置文件中具体有什么东西呢?

你可以通过git config -l来查看

常用的命令

  • git config -e 编辑配置文件

    1
    2
    3
    # git config --local -e 编辑仓库级别配置文件
    # git config --global -e 编辑用户级别配置文件
    # git config --system -e 编辑系统级别配置文件
  • git config 添加配置项目

    1
    2
    # git config --global user.email “you@example.com”
    # git config --global user.name “Your Name”

8.git branch

  • 创建分支

    1
    git branch test #test为分支名
  • 切换分支

    1
    git checkout test
  • 将新分支推送到github

    1
    git push origin [branch name]
  • 查看分支

    1
    2
    3
    4
    5
    6
    7
    8
    #查看本地分支
    git branch

    #查看远程分支
    git branch -r

    #查看所有分支
    git branch -a
  • 删除分支

    1
    2
    3
    4
    5
    #删除本地分支
    git branch -d [branch name]

    #删除github远程分支,分支名前的冒号代表删除。
    git push origin :[branch name]

回退到某个版本

  • 查看之前提交的记录

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    git log

    commit 7efbc0bb4f42bc837027fe929f05d4148aff354e (HEAD -> master, origin/hexo)
    Merge: 8a3b11a 9113919
    Author: XXX
    Date: XXX
    commit信息(你自己注释的)

    commit 8a3b11a41b4c0c19fe6cf0a8a7443c86a43e8e5e
    Author: XXX
    Date: XXX

    Add YuanMa

    ...
  • 回到指定版本:

    1
    git reset --hard [你需要选择的版本信息]比如:7efbc0bb4f42bc837027fe929f05d4148aff354e
  • 强制提交

    1
    2
    3
    4
    git push -f origin master

    #如果提交不了,你可能需要先merge一下远程的分支
    git pull [repo的别名] [远程的branch名称]

将本地的分支推送到远程的非master分支

  • 在本地repo根目录下初始化

    1
    git init
  • 添加远程repo

    1
    git remoote add [repo别名--你自己取] [远程repo url]
  • 添加到工作区

    1
    git add . #或者选择你需要添加的文件
  • 提交

    1
    git commit -m "你自己的注视,方便你自己记忆提交版本,以便你以后可能回退"
  • 推送

    1
    2
    3
    4
    5
    #推送到master分支
    git push [repo别名] master

    #推送到非master分支
    git push [repo别名] master:[远程分支名]