使用的大致流程
- 安装git,注册GitHub账号
- 生成SSH密钥,并配置到GitHub上
- 创建本地git项目库
- 初始化本地项目git init,并把文件添加到暂存区git add.,提交暂存区文件git commit
- 在远程仓库创建一个新的项目,然后本地连接远程仓库git remote…
- 本地将项目推送到远程仓库git push…
先检查电脑是否安装git,没安装的话先安装,安装后配置git。
1.进入命令行环境后,我们执行以下操作来创建 SSH 密钥。
cd ~/.ssh
(1)如果还没有 ~/.ssh 目录,可以手工创建一个(mkdir ~/.ssh),之后再通过cd ~/.ssh进入SSH目录
(2)可以通过ls -l命令查看SSH目录下的文件,来确认你是否已经生成过SSH密钥;如果SSH目录为空,我们开始第二步,生成 SSH 密钥;如果存在id_rsa.pub这个文件,说明你之前生成过SSH密钥,后面有介绍如何添加多个sshkey
2.生成SSH密钥
我们通过下面的命令生成密钥,请将命令中的YOUR_EMAIL@YOUREMAIL.COM替换为你自己的Email地址。
ssh-keygen -t rsa -C "YOUR_EMAIL@YOUREMAIL.COM"
在SSH生成过程中会出现以下信息,按屏幕的提示操作即可;
$ ssh-keygen -t rsa -C “YOUR_EMAIL@YOUREMAIL.COM”
Generating public/private rsa key pair.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /Users/USERNAME/.ssh/id_rsa.
Your public key has been saved in /Users/USERNAME/.ssh/id_rsa.pub.
The key fingerprint is:
15:81:d2:7a:c6:6c:0f:ec:b0:b6:d4:18:b8:d1:41:48 YOUR_EMAIL@YOUREMAIL.COM
3.获取SSH公钥信息
SSH密钥生成结束后,你可以在SSH目录下看到私钥id_rsa和公钥id_rsa.pub这两个文件,不要把私钥文件id_rsa的信息透露给任何人。我们可以通过文本编辑器或cat命令来查看id_rsa.pub公钥信息。
(1)通过编辑器。使用你熟悉的文本编辑器,比如 记事本、Sublime Text等软件打开id_rsa.pub,复制里面的所有内容以备下一步使用。
(2)通过cat命令。在命令行cat id_rsa.pub
行后命令行界面中会显示id_rsa.pub文件里的内容,复制后在下一步使用。
(3)通过直接使用命令将id_rsa.pub文件里的内容复制到剪切板中
Windows:clip < ~/.ssh/id_rsa.pub
Mac:pbcopy < ~/.ssh/id_rsa.pub
GNU/Linux (requires xclip):xclip -sel clip < ~/.ssh/id_rsa.pub
4.添加SSH公钥到github
(1)打开https://gitlab.com/profileProfile配置页面,选择SSH Keys.
2)添加SSH公钥
按照要求填写Title和Key,其中Title是Key的描述信息(如MacForGitHub等),Key是上面复制的SSH公钥的内容,直接粘贴到输入框中保存即可。
5.测试SSH连接
ssh -T git@github.com
如果是第一次的会提示是否continue,输入yes就会看到:
You've successfully authenticated, but GitHub does not provide shell access 。
这就表示已成功连上github。
接下来我们要做的就是把本地仓库传到github上去,在此之前还需要设置username和email,因为github每次commit都会记录他们。
$ git config --global user.name "your name"
$ git config --global user.email "your_email@youremail.com"
6.创建本地git库
如果已有项目的话,就直接进入这个项目,,如果没有就创建一个
$ mkdir TinkerTest2
$ cd TinkerTest2
$ pwd
/Users/mbm/Downloads/Code/TinkerTest2
pwd命令用于显示当前目录。在我的Mac上,这个仓库位于/Users/mbm/Downloads/Code/TinkerTest2。
第二步,通过git init命令把这个目录变成Git可以管理的仓库:
$ git init
用命令git add告诉Git,把文件添加到仓库
git add .
用命令git commit告诉Git,把文件提交到仓库
git commit -m "first commit"
简单解释一下git commit命令,-m后面输入的是本次提交的说明,可以输入任意内容,当然最好是有意义的,这样你就能从历史记录里方便地找到改动记录。
现在,运行git status命令看看结果:
$ git status
# On branch master
# Changes not staged for commit:
# (use "git add <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# modified: readme.txt
#
no changes added to commit (use "git add" and/or "git commit -a")
git status命令可以让我们时刻掌握仓库当前的状态,上面的命令告诉我们,readme.txt被修改过了,但还没有准备提交的修改
7.创建远程库
首先,登陆GitHub,然后,在右上角找到“Create a new repo”按钮,创建一个新的仓库
创建成功后,目前,在GitHub上的这个TinkerTest2仓库还是空的,GitHub告诉我们,可以从这个仓库克隆出新的仓库,也可以把一个已有的本地仓库与之关联,然后,把本地仓库的内容推送到GitHub仓库。
现在,我们根据GitHub的提示,在本地的TinkerTest仓库下运行命令:
git remote add origin git@github.com:QMingM/TinkerTest2.git
git push -u origin master
请千万注意,把上面的QMingM/TinkerTest2替换成你自己的GitHub账户名和项目名,否则,你在本地关联的就是我的远程库,关联没有问题,但是你以后推送是推不上去的,因为你的SSH Key公钥不在我的账户列表中。
mbmdeMacBook-Pro:TinkerTest2 mbm$ git remote add origin git@github.com:QMingM/TinkerTest2.git
mbmdeMacBook-Pro:TinkerTest2 mbm$ git push -u origin master
Counting objects: 76, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (55/55), done.
Writing objects: 100% (76/76), 129.32 KiB | 7.00 KiB/s, done.
Total 76 (delta 0), reused 0 (delta 0)
To github.com:QMingM/TinkerTest2.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分支关联起来,在以后的推送或者拉取时就可以简化命令
从现在起,只要本地作了提交,就可以通过命令:
$ git push origin master
前面说的先有本地库,后有远程库的时候,如何关联远程库。
现在,假设我们从零开发,那么最好的方式是先创建远程库,然后,从远程库克隆。
首先在GitHub创建一个库,我们勾选Initialize this repository with a README,这样GitHub会自动为我们创建一个README.md文件。创建完毕后,可以看到README.md文件:
现在,远程库已经准备好了,下一步是用命令git clone克隆一个本地库:
$ git clone git@github.com:QMingM/TinkerTest2.git
Cloning into 'TinkerTest2'...
remote: Counting objects: 79, done.
remote: Compressing objects: 100% (57/57), done.
remote: Total 79 (delta 1), reused 75 (delta 0), pack-reused 0
Receiving objects: 100% (79/79), 129.93 KiB | 22.00 KiB/s, done.
Resolving deltas: 100% (1/1), done.
总结:在配置好ssh key和username和email的情况下,进入到本地项目目录下
git init
git add .
git commit -m "提交说明"
git remote add origin git@github.com:QMingM/TinkerTest2.git
git push -u origin master
初始化一个Git仓库,使用git init命令。
添加文件到Git仓库,分两步:
第一步,使用命令git add ,注意,可反复多次使用,添加多个文件;
第二步,使用命令git commit,完成。
要随时掌握工作区的状态,使用git status命令。
如果git status告诉你有文件被修改过,用git diff可以查看修改内容
要关联一个远程库,使用命令git remote add origin git@server-name:path/repo-name.git;
关联后,使用命令git push -u origin master第一次推送master分支的所有内容;
此后,每次本地提交后,只要有必要,就可以使用命令git push origin master推送最新修改;