Git 是分布式版本控制系统,实际中可以找一台电脑充当服务器的角色,每天 24 小时开机,其他每个人都从这个“服务器”仓库克隆一份到自己的电脑上,并且各自把各自的提交推送到服务器仓库里,也从服务器仓库中拉取别人的提交。 分布式版本系统的最大好处之一是可以离线工作,联网时提交推送更新即可。

How to keep your git repository private?

  1. github 创建 private 仓库
  2. 自己动手,搭一个 Git 服务器,因为是你自己的 Git 服务器,所以别人也是看不见的。公司内部开发必备。

SSH 配置

  1. SSH 密钥配置

    1. 读取 global 级别的配置:git config --global --list,查看是否设置 username 和 email

    2. 使用 ssh-keygen 生成 public/private rsa key pair.

      ssh-keygen -t rsa -C "xxx@qq.com", 后面的邮箱改成 github 注册邮箱 执行之后会提示一系列操作,注意确认秘钥的保存路径的时候,我一般偏向自己针对网站修改一下,否则后续多个 ssh 密钥就不好处理了。

    3. 添加 rsa 公钥到 github 远程仓库

      github 配置页: Settings -- SSH and GPG keys -- New SSH key, 将本地生成的 id_rsa.pub 的内容复制粘贴即可

    4. 测试是否配置成功

      ssh -T git@github.com

  2. 本地设置多个 ssh 密钥 解决办法就是:生成两个(或多个)不同的公私密钥对,用 config 文件管理它们。~/.ssh 目录下创建名为 config 的文件:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    # gitee and github
    # 注意:多个Host公用一个公钥时,
    # 对应的HostName和Port必须跟在Host后面
    Host gitee.com
    HostName gitee.com
    Host github.com
    HostName github.com
    PreferredAuthentications publickey
    IdentityFile ~/.ssh/id_rsa

    # gitlab.company.com
    Host gitlab.company.com
    HostName gitlab.company.com
    PreferredAuthentications publickey
    IdentityFile ~/.ssh/company_rsa

    # 其他的统一用 id_rsa 文件登陆,或者密码。
    # 注意:这里的第二行后面有个 password,就是同时允许密码登陆
    # 不然第一次没加公钥,密码也登陆不了,会提示错误:Permission denied (publickey,password).
    Host *
    PreferredAuthentications publickey,password
    IdentityFile ~/.ssh/id_rsa

    参考资料:git 配置多个 SSH Key

本地代码纳入 git 管理,并上传至 github

  1. 在 github 上手动创建仓库(假设仓库名为:mybackup)

  2. 初始化本地仓库

    1
    2
    cd mybackup
    git init

    git init 将当前目录变成 Git 可以管理的仓库, 具体表现为: 执行命令后,在当前目录下生成 .git 目录,是 Git 来跟踪管理版本库的。

  3. 添加文件到暂存区 git add -A 或者 git add 文件或文件夹

  4. 提交到本地仓库 git commit -m your comment

    -m 后面输入的是本次提交的说明,可以输入任意内容,当然最好是有意义的,这样你就能从历史记录里方便地找到改动记录。

  5. 配置远程仓库 git remote add origin https://github.com/YOURGITHUBID/mybackup.git

  6. 将本地仓库 push 到远程仓库 git push -u origin master

    由于远程库是空的,我们第一次推送master分支时,加上了-u参数,Git 不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。

新建项目直接用 Git 管理

假设代码仓库从零开发,步骤如下

  1. github 网页新建远程仓库

  2. 复制仓库链接,使用 git clone 从远程库克隆

    git clone 支持通过 httpsssh 两种协议

    Use a password-protected SSH key. Use Git using the web URL.

    1
    2
    git clone https://github.com/username/repo_name.git
    git clone git@github.com:username/repo_name.git

  3. 如果有必要的话,可以再对当前的仓库设置个人信息。

    1
    2
    git config --local user.name "your_name"
    git config --local user.email "your_email"

    注意: local 的个人信息优先级高于 global 的个人信息,即:在设置了 global 情况下,再对某个仓库单独设置 local 也是可以。

  4. 把本地库的所有内容推送到远程库上: git push origin master 把本地库的内容推送到远程,用git push命令,实际上是把当前分支master推送到远程。