![f033d66c60facc3f0a6790defa9c968b.png](https://img-blog.csdnimg.cn/img_convert/f033d66c60facc3f0a6790defa9c968b.png)
导读:上一篇文章介绍了 git 的安装及本地的几个基本操作,这篇文章介绍如何使用 git 这个工具,完成本地与远程仓库的交互。
这篇文章将告诉你,如何使用 git
- 下载仓库文件
- 把本地的文件上传到远程仓库
- 仓库文件有更新时保持本地与远程一致
让我们开始吧!
上一篇:
CatOneTwo:GitHub 小白入门(三)Git 的安装及使用zhuanlan.zhihu.com![85a7ca2ae672c84319c1788a0a3c1efa.png](https://img-blog.csdnimg.cn/img_convert/85a7ca2ae672c84319c1788a0a3c1efa.png)
原博客地址:
https://github.com/CatOneTwo/GitHub-Tutorialgithub.com1. SSH 配置
要想本地与远程仓库交互,必须有一个安全机制防止数据泄漏 ,这个安全机制就是 SSH,因此远程交互之前需要进行 SSH 配置。
1.1 生成 SSH key
想要生成 SSH KEY 需要先安装 SSH,不过我们之前已经安装的 GitBash 自带 SSH (我的操作系统是 Windows 10)
打开 GitBash ,输入 ssh,如果返回如下界面说明 SSH 已安装,否则得自己安装呀!
![7027c799b891bf8b68595dd053d5e57b.png](https://img-blog.csdnimg.cn/img_convert/7027c799b891bf8b68595dd053d5e57b.png)
紧接着输入 ssh-keygen -t rsa (指定 rsa 算法生成密钥),接着连续三个回
车键(不需要输入密码),然后就会生成两个文件 id_rsa (密钥)和 id_rsa.pub (公钥)。
我划线的地方就是密钥和公钥存储的位置,等会儿我们需要打开文件复制密钥 。
![ad017d4e68dcefef379c2f5b3b7e116c.png](https://img-blog.csdnimg.cn/img_convert/ad017d4e68dcefef379c2f5b3b7e116c.png)
1.2 添加 SSH key
接下来要做的是把 id_rsa.pub 的内容添加到 GitHub 上,这样你本地的 id_rsa 密钥跟 GitHub 上的 id_rsa.pub 公钥进行配对,授权成功才可以提交代码。
打开 GitHub,点击右上角的你的头像,点击设置 settings:
![6f1c2618204e405c1e59461679bc6f2e.png](https://img-blog.csdnimg.cn/img_convert/6f1c2618204e405c1e59461679bc6f2e.png)
点击左侧的 SSH and GPG keys,点击右上角的 New SSH key:
![ba0fd39bfbedc8bc267905685dd8dcaa.png](https://img-blog.csdnimg.cn/img_convert/ba0fd39bfbedc8bc267905685dd8dcaa.png)
进入到下面的界面,把刚刚生成的公钥 (id_rsa.pub 文件中的内容)复制到 Key 所在框, Title 不用填,复制好点击下方的 Add SSH key 按钮即可。
提示:id_rsa.pub 可以选择用 Notepad++ 或 Sublime 打开~
![31b3020fd21a52da12f67cbdb124ac28.png](https://img-blog.csdnimg.cn/img_convert/31b3020fd21a52da12f67cbdb124ac28.png)
添加完返回 SSH 页面就会出现你的本地信息,如下图所示:
![ef8d29ecd1a0b0013e95cd92f2a930ff.png](https://img-blog.csdnimg.cn/img_convert/ef8d29ecd1a0b0013e95cd92f2a930ff.png)
1.3 验证绑定
最后我们验证一下本地的 git 与 GitHub 是否绑定成功,在 GitBash 输入 ssh -T git@github.com ,如果返回下面的提示,说明绑定成功✌,不过有时候返回有些慢呀
![d6671103fb351a84efa5dfdd1e1f808b.png](https://img-blog.csdnimg.cn/img_convert/d6671103fb351a84efa5dfdd1e1f808b.png)
到此为止,我们的 SSH 配置完成,接下来我们可以与远程仓库交互啦!
2. 通过 Git 下载代码
看过第一篇教程的同学一定知道,某个项目的界面的 Clone or download 按钮可以下载整个仓库/项目的文件。
最简单的就是点击 Download ZIP,这是常规的下载操作,下载一个压缩包到指定目录。
另一种方法就是使用 git clone,这种方法又分为 cloning with HTTPS 和 clone with SSH,下面我们分别演示一下。
❓到这里你会有疑问,我能直接点击下载,为啥要学 git clone 。
还记得第一篇教程就说过,git 是个版本管理工具,你用它就是为了记录提交历史,写错了能够回滚到历史文件等。
如果你下载的是你自己的文件,你直接 download,就完成不了上面的功能,你改了文件也没法在原来的基础上提交 。
当然如果你只是为了下载别人的仓库看看,不需要版本控制这些功能,直接download 就行;但如果需要用到版本管理,就得学习 git clone
![3b9fb19781c2d17bf67be92a2cd92590.png](https://img-blog.csdnimg.cn/img_convert/3b9fb19781c2d17bf67be92a2cd92590.png)
2.1 git clone with HTTPS
这种方法是官方推荐的,它不用 SSH 就可以完成。
我以一个仓库为例,注意上面写的是 Clone with HTTPS
,复制下面的 URL:
![37e062912411474ae0d434d33bf8df17.png](https://img-blog.csdnimg.cn/img_convert/37e062912411474ae0d434d33bf8df17.png)
打开文件要 clone 的目录,右击选择 Git Bash
Here:
![013d7dba056f80caa06add9ffb105d87.png](https://img-blog.csdnimg.cn/img_convert/013d7dba056f80caa06add9ffb105d87.png)
打开 GitBash 窗口,输入 git clone,后面跟刚刚复制的 URL,回车,等它下载完,你会看到你的文件夹里直接就是仓库里的文件。
语句长这样:
git clone https://github.com/project/repo.git
![a4e437c882694577012cfbf04ed153f8.png](https://img-blog.csdnimg.cn/img_convert/a4e437c882694577012cfbf04ed153f8.png)
2.2 git clone with SSH
在 Clone with HTTPS
那里,点击 Use SSH
,就会切换成第二种 git clone 方式。
第二种方式需要用到 SSH,没有配置是不能用的,所以我们放到这一节介绍。
其实步骤与上面的步骤一样,只不过复制的 URL 是 SSH 机制下的:
![714c9f3bfa1a4d806ab3f936093a8302.png](https://img-blog.csdnimg.cn/img_convert/714c9f3bfa1a4d806ab3f936093a8302.png)
接着也是在目录下打开 Git Bash,输入 git clone, 后面是刚刚复制的 URL。
语句长这样,可以看出 SSH 下的 URL 和 HTTPs 下的 URL 不一样。
git clone git@github.com:project/repo.git
2.3 异同
再说这两种方法的异同。
同:HTTPs 与 SSH 下的 git 都可以直接进行 git clone 操作
异:
- HTTPs git clone 到本地,进行了一些文件的修改,当再次提交到 GitHub远程服务器的时候,都会进行账号与密码的输入
- SSH git clone 到本地之后,由于已有 SSH Keys 授权,就不需要用户名和密码进行授权了。
3. 通过 Git 提交代码
3.1 两个命令
上一节我们讲了一些基本的 git 命令,不过都只涉及本地,现在我们想本地与远程仓库交互,就需要学习两个新命令:
- git push:翻译为推,当你的代码更新,需要把本地的推到远程仓库
- git pull:翻译为拉,当远程仓库有更新,你需要把远程的拉到本地进行合并
可以看出这两个命令都是为了保证本地与远程的同步。
我们需要区分 git clone 和 git pull,虽然它们都是从远程仓库到本地的更新,但前者在本地无仓库时使用,后者是本地已有仓库时使用。
使用举例:
git push origin master # 把本地代码推到远程 master 分支
git pull origin master # 把远程最新的代码更新到本地
一般我们在 push 之前都会先 pull ,这样不容易冲突。
3.2 提交代码
通过 git 提交代码的前提是已有仓库,然后把仓库 clone 到本地,你修改后再pull。
相信通过前面的教程,你已经学会如何新建和删除一个仓库,我这里用一个临时建的仓库演示一下提交功能。
![54f6e8e34b4e8d9c9af681ed9724e76a.png](https://img-blog.csdnimg.cn/img_convert/54f6e8e34b4e8d9c9af681ed9724e76a.png)
然后我们把仓库 clone 到本地,为了不输入账号密码,我这里用 SSH 的方法 clone。
![c53e62e322e84af8234ecc10bcf1815c.png](https://img-blog.csdnimg.cn/img_convert/c53e62e322e84af8234ecc10bcf1815c.png)
接下来我就要在更新本地仓库, 我只是新加一个 python 文件,你也可以修改一个已有文件。
![c1ddc2aa1ca72efe24eedfbcba5cbeb4.png](https://img-blog.csdnimg.cn/img_convert/c1ddc2aa1ca72efe24eedfbcba5cbeb4.png)
看过上一篇 git 教程,我们就知道所有的改动都需要通过 git add
和git commit
提交到本地的仓库。
在这个文件夹/本地仓库,右击打开 Git Bash,输入 git status
查看状态,再用 git add
和git commit
提交新加的文件。
如果要 add 目录下的所有文件,用
git add --all
注意 first commit 是我为这次 commit 起的名字,你可以写成其他名字。
![4003216d3375a09516a6d37c0030f47f.png](https://img-blog.csdnimg.cn/img_convert/4003216d3375a09516a6d37c0030f47f.png)
然后输入 git log
查看提交历史,可以看到一共有两次 commit,第一次是在 GitHub 上新建仓库,第二次是刚刚在本地新提交文件。
![ab80a2b62f689442d992602f3cc162a8.png](https://img-blog.csdnimg.cn/img_convert/ab80a2b62f689442d992602f3cc162a8.png)
到现在我们才完成本地更新的工作,接下来要把本地仓库 push 到远程仓库
在 Git Bash 输入 git push origin master
即可
默认向 GitHub 上的 test 目录提交了代码,而这个代码是在 master 分支。
![8af464527d23f065e1ba85977c8eafc3.png](https://img-blog.csdnimg.cn/img_convert/8af464527d23f065e1ba85977c8eafc3.png)
然后我们刷新远程仓库,可以看到有更新:
![4c32ab087c8cc7d1586a7fd0ded0379c.png](https://img-blog.csdnimg.cn/img_convert/4c32ab087c8cc7d1586a7fd0ded0379c.png)
总结:这篇文章介绍了 SSH 的配置,通过 SSH 完成 git clone 和 git pull 等操作,完成本地仓库与远程仓库的交互,并记录每次的提交历史。
下一篇:
CatOneTwo:GitHub 小白入门(五)Git 进阶zhuanlan.zhihu.com返回目录:CatOneTwo:本专栏目录