1. 注册 GithHub 账号并登录
GitHub 官网地址: https://github.com/
2. SSH Key 设置
- 由于本地
Git
仓库和GitHub
仓库之间的传输是通过SSH
加密的,所以,需要一点设置:
【第 1 步】创建 SSH Key。通常在 C 盘的 user (用户)目录下,进入主目录,会有一个 .ssh
的文件夹,进入后可以看到 id_rsa
和 id_rsa.pub
这两个文件,如果找到了这两个文件,如下图所示,可以直接跳过第一步
如果没有,打开 Windows
下打开 Git Bash
(Linux 中需要打开 Shell),执行下面命令,以创建 SSH Key:
ssh-keygen -t rsa -C "[email protected]"
一路回车,使用默认值即可,因为这个 Key
也不是用于军事目的,所以也无需设置密码。
然后就可以到显示的目录下找到 .ssh
,里面有 id_rsa
和 id_rsa.pub
两个文件,这两个就是 SSH Key 的秘钥对,id_rsa
是私钥,不能泄露出去,id_rsa.pub
是公钥,可以放心地告诉任何人。
【第 2 步】首先创建 GitHub 账号并登陆,打开 Setting 进行设置,新建 SSH key
【第 3 步】点 New SSH key
后,填上任意 Title
,在 Key
文本框里粘贴id_rsa.pub
文件的所有内容:
【第 4 步】输入密码进行确认,最后就可以看到,SSH key
添加完成
为什么 GitHub 需要 SSH Key 呢? 因为 GitHub 需要识别出你推送的提交确实是你推送的,而不是别人冒充的,而 Git 支持 SSH 协议,所以,GitHub 只要知道了你的公钥,就可以确认只有你自己才能推送。
当然,GitHub
允许你添加多个 Key
。假定你有若干电脑,你一会儿在公司提交,一会儿在家里提交,只要把每台电脑的 Key 都添加到 GitHub,就可以在每台电脑上往 GitHub
推送了。
最后友情提示,在 GitHub
上免费托管的 Git
仓库,任何人都可以看到喔(但只有你自己才能改)。所以,不要把敏感信息放进去。
如果你不想让别人看到 Git
库,有两个办法,一个是交点保护费,让 GitHub
把公开的仓库变成私有的,这样别人就看不见了(不可读更不可写)。另一个办法是自己动手,搭一个 Git
服务器,因为是你自己的 Git
服务器,所以别人也是看不见的。这个方法我们后面会讲到的,相当简单,公司内部开发必备。
确保你拥有一个 GitHub
账号后,我们就即将开始远程仓库的学习。
3. 添加远程库
3.1 第一种情况
现在的情景是,你已经在本地创建了一个 Git 仓库后,又想在 GitHub 创建一个 Git 仓库,并且让这两个仓库进行远程同步,这样,GitHub 上的仓库既可以作为备份,又可以让其他人通过该仓库来协作,真是一举多得。
注: 若本地有项目,但还没创建本地 Git 仓库,利用下面指令初始化本地仓库:
git init
【第 1 步】 首先,登陆 GitHub
,然后,在右上角找到 New repository
按钮,创建一个新的仓库:
【第 2 步】 自定义仓库名,添加 README file
,点击 Create repository
,远程仓库就创建成功了。
【第 3 步】 进入创建好的远程仓库后,在 GitHub
上的这个仓库还是空的,GitHub
告诉我们,可以从这个仓库克隆出新的仓库,也可以把一个已有的本地仓库与之关联,然后,把本地仓库的内容推送到 GitHub
仓库。
目前我们已经有了一个本地仓库,要通过本地仓库与远程仓库建立连接。
【第 4 步】点击 Code
下的 SSH
,点击复制 SSH
链接(即为此远程仓库对应的地址)
【第 5 步】打开建有本地仓库的文件,右键打开 Git Bash
。 并执行下面命令,将本地仓库与远程仓库进行关联:
git remote add origin [email protected]:99Young99/RepsitoryTest.git
[email protected]:99Young99/RepsitoryTest.git
为上一步复制的远程仓库的 SSH
链接,注意需要改为你仓库下对应的链接。
添加后,远程库的名字就是 origin
,这是 Git
默认的叫法,也可以改成别的,但是 origin
这个名字一看就知道是远程库。
下一步,就可以把本地库的所有内容推送到远程库上:
git push -u origin master
把本地库的内容推送到远程,用 git push
命令,实际上是把当前分支 master
推送到远程。
由于远程库是空的,我们第一次推送 master
分支时,加上了 -u
参数,Git
不但会把本地的 master
分支内容推送的远程新的 master
分支,还会把本地的 master
分支和远程的 master
分支关联起来,在以后的推送或者拉取时就可以简化命令:git push origin master
推送成功后,可以立刻在 GitHub
页面中看到远程库的内容已经和本地一模一样.
值得注意的是通常 GtiHub
上的主分支命名为 main
,而刚刚我们推送的使用使用了 -u
参数,会自动在远程仓库中建立一个新的 master
分支,并与本地仓库的 master
分支关联起来
3.2 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.
这个警告只会出现一次,后面的操作就不会有任何警告了。
3.3 第二种情况
上一种情况是有了本地仓库,如何关联远程仓库并推送,如果我们的项目从零开始,或者有了远程仓库,最好的方法就是首先创建或者选择远程仓库,然后再克隆到本地仓库。
【第 1 步】打开远程仓库,在 Code
下的 SSH
,点击复制 SSH
链接(即为此远程仓库对应的地址)
【第 2 步】任意打开一个工作区(空白文件夹),右键点击 Git Bash Here
,并输入如下命令:
git clone [email protected]:99Young99/AI-Learning-Materials.git
如果有多个人协作开发,那么每个人各自从远程克隆一份就可以了。
注意到,GitHub
给出的地址不止一个,还可以用https://github.com/99Young99/AI-Learning-Materials.git
这样的地址。实际上,Git
支持多种协议,默认的 git://
使用 ssh
,但也可以使用 https
等其他协议。
使用 https
除了速度慢以外,还有个最大的麻烦是每次推送都必须输入口令,但是在某些只开放 http
端口的公司内部就无法使用 ssh
协议而只能用https
。
Git
支持多种协议,包括 https
,但 ssh
协议速度最快。
4. 上传项目
4.1 将远程仓库中的文件推送至本地仓库中
git pull --rebase origin main
这里的 origin main
表示从远程的 main
主分支上 pull
项目当本地,注意你所要 pull
的分支是否也叫 main
,不是改为相应的分支名即可。且 Github
上的主分支为 main
, 而 Gitee
上的为 master
注: 此操作会将 Github
对应连接仓库的文件下拉到本地,但并不会导致本地文件丢失,这步非常重要,必须先将远程仓库的文件下拉过来。
4.2 将本地项目放到暂存区(具体哪里不用管)
git add .
注: .
表示本地项目目录下的所有文件,也可以指定某个文件
4.3 将本地项目从暂存区提交
git commit -m '任意说明'
4.4 将本地仓库中的文件推送至指定的远程仓库中
git push -u origin main
在 push
过程中可能会弹出这个窗口,输入注册 gitee 时的用户名和密码即可
4.5 上传项目代码过程图
刷新 Gitee 仓库,即可看到项目已经上传
5. 后续内容需要更改后重新上传
5.1 将本地项目放到暂存区(具体哪里不用管)
git add .
注: .
表示本地项目目录下的所有文件,也可以指定某个文件
5.2 将本地项目从暂存区提交
git commit -m '说明'
5.3 将本地仓库中的文件推送至指定的远程仓库中
git push -u origin main
6. 指定分支上传
create a new repository on the command line
echo "# -" >> README.md
git init
git add README.md
git commit -m "first commit"
git branch -M main
git remote add origin [email protected]:99Young99/-.git
git push -u origin main
push an existing repository from the command line
git remote add origin [email protected]:99Young99/-.git
git branch -M main
git push -u origin main
7. 注意事项
由于 Github 上只有 main 分支,而 git 默认为 master 分支
这个时候需要将本地 git 的分支改为 main,执行下面语句:
git branch -m master main
否则会报错: error: src refspec main does not match any
8. 技巧
8.1 在账户下将默认分支由 main 改为 master
8.2 在项目下将默认分支由 main 改为 master
8.3 将别人的仓库移到自己的仓库下
进入别人的仓库后,点击 Fork 过来