1、下载与安装
去Git官网https://git-scm.com/downloads下载对应版本的Git安装包并安装。安装教程可参考https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/00137396287703354d8c6c01c904c7d9ff056ae23da865a000
在此特别说明在最后配置用户名和邮箱时一定要把Your Name换成自己的GitHub用户名,[email protected]换成自己的GitHub注册邮箱。
$ git config --global user.name "Your Name"
$ git config --global user.email "[email protected]"
2、创建版本库
首先,选择一个合适的地方,创建一个空目录:
$ mkdir learngit
$ cd learngit
$ pwd
/e/learngit
pwd
命令用于显示当前目录。在我的Windows上,这个仓库位于E:\learngit
。
为了避免遇到各种莫名其妙的问题,请确保目录名(包括父目录)不包含中文。
然后,通过git init
命令把这个目录变成Git可以管理的仓库:
$ git init
Initialized empty Git repository in E:/learngit/.git/
3、把文件添加到版本库中
编写一个readme.txt文件,内容如下:
Git is a version control system. Git is free software.
然后把这个文件放到learngit目录下。
下面便是把这个文件添加到版本库的具体步骤:
第一步,用命令git add
告诉Git,把文件添加到仓库:
$ git add readme.txt
执行上面的命令,没有任何显示,这就对了,Unix的哲学是“没有消息就是好消息”,说明添加成功。
第二步,用命令git commit
告诉Git,把文件提交到仓库:
$ git commit -m "wrote a readme file"
[master (root-commit) eaadf4e] wrote a readme file
1 file changed, 2 insertions(+)
create mode 100644 readme.txt
接下来就是把本地代码上传到GitHub服务器上以备份。本地的仓库叫Git仓库,而服务器上的仓库叫GitHub仓库,这两个仓库之间的传输采用的是SSH加密传输,所以有必要配置一下传输通道。
4、配置SSH Key
第一步:创建SSH Key。在用户主目录下,看看有没有.ssh目录,如果有,再看看这个目录下有没有id_rsa
和id_rsa.pub
一这两个文件,如果已经有了,可直接跳到下一步。如果没有,打开Git Bash,创建SSH Key:
$ ssh-keygen -t rsa -C "[email protected]"
你需要把邮件地址换成你自己的邮件地址,然后一路回车,使用默认值即可,由于这个Key也不是用于军事目的,所以也无需设置密码。
如果一切顺利的话,可以在用户主目录里找到.ssh
目录,里面有id_rsa
和id_rsa.pub
两个文件,这两个就是SSH Key的秘钥对,id_rsa
是私钥,不能泄露出去,id_rsa.pub
是公钥,可以放心地告诉任何人。
第二步:登陆GitHub,点击右上角头像右侧的小三角,点击Settings->SSH and GPG keys,然后点击New SSH key,填上任意Title,在Key文本框里粘贴id_rsa.pub
文件的内容。
5、添加远程库
第一步:登录GitHub,点击右上角头像左侧的加号,然后点击New repository创建一个新的GitHub仓库,在Repository name中填入learngit,其他的默认设置即可,最后点击Create repository按钮,就成功地创建了一个GitHub仓库,目前这个仓库还是空的。
第二步:在本地的learngit仓库下运行命令:
$ git remote add origin [email protected]:xxx/learngit.git
请千万注意,把上面的xxx
替换成你自己的GitHub账户名。
添加后,远程库的名字就是origin
,这是Git默认的叫法,也可以改成别的,但是origin
这个名字一看就知道是远程库。
第三步:把Git仓库的内容推送到GitHub仓库中。
$ git push -u origin master
Counting objects: 100% (3/3), done.
Delta compression using up to 4 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 266 bytes | 266.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To github.com:xxx/learngit.git
* [new branch] master -> master
Branch 'master' set up to track remote branch 'master' from 'origin'.
把本地库的内容推送到远程,用git push
命令,实际上是把当前分支master
推送到远程。
由于远程库是空的,我们第一次推送master
分支时,加上了-u
参数,Git不但会把本地的master
分支内容推送的远程新的master
分支,还会把本地的master
分支和远程的master
分支关联起来,在以后的推送或者拉取时就可以简化命令。
推送成功后,可以立刻在GitHub页面中看到远程库的内容已经和本地一模一样。
从现在起,只要本地作了提交,就可以通过命令:
$ git push origin master
把本地master
分支的最新修改推送至GitHub。现在,你就拥有了真正的分布式版本库!
SSH警告
当你第一次使用Git的clone
或者push
命令连接GitHub时,会得到一个警告:
The authenticity of host 'github.com (xx.xx.xx.xx)' can't be established.
RSA key fingerprint is xx.xx.xx.xx.xx.
Are you sure you want to continue connecting (yes/no)?
这是因为Git使用SSH连接,而SSH连接在第一次验证GitHub服务器的Key时,需要你确认GitHub的Key的指纹信息是否真的来自GitHub的服务器,输入yes
回车即可。
Git会输出一个警告,告诉你已经把GitHub的Key添加到本机的一个信任列表里了:
Warning: Permanently added 'github.com' (RSA) to the list of known hosts.
这个警告只会出现一次,后面的操作就不会有任何警告了。