远程管理

前言

先注册 GitHub 账号,由于本地Git仓库和远程GitHub仓库之间的传输是通过SSH进行加密的,所以需要一点设置。

  1. 创建SSH Key。
1
$ ssh-keygen -t rsa -C "youremail@example.com"

找到 C:\Users\wenlo\.ssh 这个目录,里面有 id_rsa
id_rsa.pub 两个文件,这两个就是SSH Key的密钥对。

  1. 登录GitHub,打开”Account settings”,”SSH Keys”页面:

点“Add Key”,你就应该看到已经添加的Key:

添加远程库

现在的情景是,你已经在本地创建了一个Git仓库后,又想在GitHub创建一个Git仓库,并且让这两个仓库进行远程同步,这样,GitHub上的仓库既可以作为备份,又可以让其他人通过该仓库来协作,真是一举多得。

首先,登陆GitHub,然后,在右上角找到“Create a new repo”按钮,创建一个新的仓库:

在Repository name填入docs,其他保持默认设置,点击“Create repository”按钮,就成功地创建了一个新的Git仓库:

目前,在GitHub上的这个docs仓库还是空的,GitHub告诉我们,可以从这个仓库克隆出新的仓库,也可以把一个已有的本地仓库与之关联,然后,把本地仓库的内容推送到GitHub仓库。

1
$ git remote add origin git@github.com:zhx2020/docs.git
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
$ git pull --rebase origin master
warning: no common commits
remote: Enumerating objects: 3, done.
remote: Counting objects: 100% (3/3), done.
remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (3/3), done.
From github.com:zhx2020/docs
* branch master -> FETCH_HEAD
* [new branch] master -> origin/master
First, rewinding head to replay your work on top of it...
Applying: wrote a readme file
Applying: add distributed
Applying: append GPL
Applying: add test.txt
Applying: remove test.txt
1
2
3
4
5
6
7
8
9
10
11
$ git push -u origin master
Enumerating objects: 14, done.
Counting objects: 100% (14/14), done.
Delta compression using up to 4 threads
Compressing objects: 100% (12/12), done.
Writing objects: 100% (13/13), 1.17 KiB | 38.00 KiB/s, done.
Total 13 (delta 3), reused 0 (delta 0)
remote: Resolving deltas: 100% (3/3), done.
To github.com:zhx2020/docs.git
0bc8f72..ab3c2b1 master -> master
Branch 'master' set up to track remote branch 'master' from 'origin'.

小结

  • 要关联一个远程库,使用命令git remote add origin git@server-name:path/repo-name.git
  • 关联后,使用命令 git push -u origin master 第一次推送master分支的所有内容;
  • 此后,每次本地提交后,只要有必要,就可以使用命令 git push origin master 推送最新修改;
  • 分布式版本系统的最大好处之一是在本地工作完全不需要考虑远程库的存在,也就是有没有联网都可以正常工作,而SVN在没有联网的时候是拒绝干活的!当有网络的时候,再把本地提交推送一下就完成了同步,真是太方便了!

从远程库克隆

上次我们讲了先有本地库,后有远程库的时候,如何关联远程库。

现在,假设我们从零开发,那么最好的方式是先创建远程库,然后,从远程库克隆。

首先,登陆GitHub,创建一个新的仓库,名字叫docs:

我们勾选Initialize this repository with a README,这样GitHub会自动为我们创建一个README.md文件。创建完毕后,可以看到README.md文件:

现在,远程库已经准备好了,下一步是用命令git clone克隆一个本地库:

1
2
3
4
5
6
7
8
$ git clone git@github.com:zhx2020/docs.git
Cloning into 'docs'...
remote: Enumerating objects: 17, done.
remote: Counting objects: 100% (17/17), done.
remote: Compressing objects: 100% (11/11), done.
Receiremote: Total 17 (delta 3), reused 13 (delta 3), pack-reused 0
Receiving objects: 100% (17/17), done.
Resolving deltas: 100% (3/3), done.

小结

  • 要克隆一个仓库,首先必须知道仓库的地址,然后使用 git clone命令克隆。
  • Git支持多种协议,包括 https,但 ssh 协议速度最快。