GitHub 运用实战入门,奶妈级教学

## 前言:

我不会用*官方*的语言告诉你Git 是什么,对此我表示深深得歉意~~
在我看来像CSDN、博客园、掘金等博客交流平台就是小的“GitHub”,只不过在这里更多的是一些零零散散的笔记或者文章,其实Gihub也是一样的“交流(友)社区",这里有一本正经的开源项目,你可以在上面学习别人的开源项目也可以上传属于自己的作品,也有各种沙雕的个人“作品”,比如 [The F**k](https://github.com/nvbn/thefuck)、比如:[P站logo生成器](https://github.com/bestony/logoly),以及各种奇葩的交友方式 /滑稽。咳咳,总的来说呢,Github 是一个供大家“学习”的平台,同时也是一个学习交流社区,就酱。我只想带你入坑,至于你学的怎么样,我包不负责 /抠鼻

![Emmm.......](https://img-blog.csdnimg.cn/20200326174342946.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDM1NTU5MQ==,size_16,color_FFFFFF,t_70)
## 阅读说明:

总文加起来 *20分钟*可以看完,我把总文分成了 Git`命令`实战 和 GitHub `运用` 两部分,各位不用担心~常用的Git命令两只手就可以数过来,无非就是提交和下载,**本篇是 Git 运用实战**,好了那么我们开始进入~~入坑~~ 学习吧。
Git命令实战入门:[传送门](https://blog.csdn.net/weixin_44355591/article/details/105125343)
## GitHub!!
相比大家一定听说过这个 ~~大型同性交友社区~~ Github我的个人理解就是代码托管的地方,比如你有个自己的小项目,你可以把它开源让更多人的看到并且利用,也可以仅有自己可见。它还可以接受别人的推送,比如:有人看了你的代码觉得有些地方写的不够好,那么他可以对你的内容进行修改,如果你觉得满意你就可以接受他的修改,同样你也可以拒绝。个人开发来说用的最多的就是无非就是clone 和 上传自己的作品,接下来让我们进入正题吧。
首先你需要注册一个[GitHub](https://github.com/)的账号(访问有时候会很慢耐心等待), 创建好以后我们就可以把本地的电脑和远程的GitHub连接起来了!在看我们的界面右上角
**点击settings**
![右上角个人-Settings](https://img-blog.csdnimg.cn/20200325182417270.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDM1NTU5MQ==,size_16,color_FFFFFF,t_70)
**点击SSH**
![通过ssh连接本机](https://img-blog.csdnimg.cn/20200325182459464.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDM1NTU5MQ==,size_16,color_FFFFFF,t_70)
![添加SSHkey](https://img-blog.csdnimg.cn/20200325182546611.png)

## 配置SSH key

那么问题来了SSh key在哪里?直接在本机Mac`终端`/ Win `CMD` 输入
`ssh-keygen -t rsa -C "yourself email.com"` 换成你的邮箱写在里面然后回车,
![连续3次回车](https://img-blog.csdnimg.cn/20200326095755630.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDM1NTU5MQ==,size_16,color_FFFFFF,t_70)
它会让你设置一些密码,不用管他一路回车就好,回车完以后他会告诉你的密钥存放在哪个目录
Linux 会放在 `/root/.ssh/`
Win 也会有对应的`提示`的
MacOS 为例 密钥放存放在了 `/User/liuyang/.ssh` :
![在访达出右击](https://img-blog.csdnimg.cn/20200326083405860.png)
![我的用户名是liuyang](https://img-blog.csdnimg.cn/20200326083513695.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDM1NTU5MQ==,size_16,color_FFFFFF,t_70)
SSH密钥文件在 `.ssh` 隐藏文件下,我们通过访达搜索到达
![我们可以看到了!](https://img-blog.csdnimg.cn/20200326084045669.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDM1NTU5MQ==,size_16,color_FFFFFF,t_70)
id_rsa是私钥, id_rsa.pub是公钥 known_hosts不必了解(这里用过多了解,把私钥保留好不要告诉任何人,我们打开并且复制公钥的内容),打开终端 输入一下内容
![复制公钥内容](https://img-blog.csdnimg.cn/2020032608480212.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDM1NTU5MQ==,size_16,color_FFFFFF,t_70)
然后把公钥的内容粘贴到Git 的 SSH keys 就好了,title 可以自己写一个标题
![配置Github SSH key](https://img-blog.csdnimg.cn/20200326090149517.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDM1NTU5MQ==,size_16,color_FFFFFF,t_70)
这样我们本地的电脑就和远端的Github“联系”好了,这两者直接就可以互通了!好了接下来我们在Github开始创建我们的~~小黑屋~~ 吧 /滑稽,我们回到Github主页
![左上角创建资料库](https://img-blog.csdnimg.cn/2020032609174251.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDM1NTU5MQ==,size_16,color_FFFFFF,t_70)
![Create it !](https://img-blog.csdnimg.cn/20200326092731658.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDM1NTU5MQ==,size_16,color_FFFFFF,t_70)
![看到英文不要慌!](https://img-blog.csdnimg.cn/20200326093054613.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDM1NTU5MQ==,size_16,color_FFFFFF,t_70)
…or create a new repository on the command line **翻译:** …或在命令行上创建新的存储库
…or push an existing repository from the command line **翻译:** …或从命令行推送现有存储库
因为我们在本地已经创建了我们的Git仓库所以我们选择后者,推送到现有的储存库到社区,我们只需要在**本地 Git 仓库** 输入上面的提示命令就好了,我的提示命令是
> git remote add origin https://github.com/Titanium-ly/MyfistGit.git
> git push -u origin master:

然后回到主页可以看到我们的**公共仓库** MyfirstGit
![我们的第一个仓库](https://img-blog.csdnimg.cn/20200326101311101.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDM1NTU5MQ==,size_16,color_FFFFFF,t_70)
![可以看到我们本地的文件了!](https://img-blog.csdnimg.cn/20200326101534571.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDM1NTU5MQ==,size_16,color_FFFFFF,t_70)
LICENCE(声明)是我自己又多写的一个文件,到这里我们已经能够把本地的作品上传到社区了!

## Clone!!
我们新建一个资料库,记得选上最下面的 Initialize this repository with a README **翻译**:使用自述文件初始化此存储库 , 这个会自动生成一个`README.md` 文件, 通常来说这个文件是来写你对自己“作品”的使用说明,形象来说是 “使用说明书”但不止“说明书”/
![生成一个有README的资料库](https://img-blog.csdnimg.cn/20200326103237979.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDM1NTU5MQ==,size_16,color_FFFFFF,t_70)
这个资料库在Github上创建好了,那么我们尝试在本地Clone把它下载到本地使用,打开我们刚刚创建好的资料库
![复制内容](https://img-blog.csdnimg.cn/20200326104758223.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDM1NTU5MQ==,size_16,color_FFFFFF,t_70)
回到本地后我们 使用 `git clone` 命令克隆这个项目

![搬运成功! ](https://img-blog.csdnimg.cn/20200326105016807.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDM1NTU5MQ==,size_16,color_FFFFFF,t_70)
嘘~~ 小声 ** , clone 真是件爽快的事情 = =


## 分支Branch!!
我们知道有时候一个项目的开发可能需要多个人一同开发,这时候为我们的项目创建分支分配各自任务就能够提高开发效率,这就像是大树,刚在我们的提交修改都是在“树干” 上完成的,接下来让我们在一个“树杈”下工作
回到Git仓库
> [root@StrawberryJam Git]# pwd
>/home/liuyang/Git

使用`git branch “branchname”`来创建分支 , `git checkout` 命令来**切换**分支
>git branch branch_1
>git checkout branch_1

`git branch` 命令查看我们的所有分支
![查看分支](https://img-blog.csdnimg.cn/20200326113404600.png)
然后我们对 `demo.txt` 文件进行修改,我们添加了一句话 *这是分支的修改*![修改后内容](https://img-blog.csdnimg.cn/2020032611353662.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDM1NTU5MQ==,size_16,color_FFFFFF,t_70)
随后git add 和 commit
![提交](https://img-blog.csdnimg.cn/20200326113755246.png)
然后我们切换到 master分支看一下文件内容,我们发现这个分支上的内容并没有被修改,原因是我们并没有把`brach_1` 分支合并到`master`
![没有合并前](https://img-blog.csdnimg.cn/20200326135329653.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDM1NTU5MQ==,size_16,color_FFFFFF,t_70)
使用`git merge` 命令把branch_1 **合并**到 master
![合并后](https://img-blog.csdnimg.cn/20200326140101232.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDM1NTU5MQ==,size_16,color_FFFFFF,t_70)

如果不再需要branch_1分支,那么就可以把它**删掉**了
![删除分支](https://img-blog.csdnimg.cn/20200326140449730.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDM1NTU5MQ==,size_16,color_FFFFFF,t_70)

## 分支冲突
我们知道一个分支修改,另一个分支不动,那么合并的时候就会很正常的合并,那么如果两个分支都对一个文件修改了怎么办呢?创建新的分支`branch_2` 并在次分支上修改`demo.txt` 文件,提交修改。
![branch_2 ](https://img-blog.csdnimg.cn/20200326142920342.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDM1NTU5MQ==,size_16,color_FFFFFF,t_70)
随后我们**切换**到`master`,并且在master对demo.txt 文件进行修改,并且提交
![master](https://img-blog.csdnimg.cn/20200326143403464.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDM1NTU5MQ==,size_16,color_FFFFFF,t_70)
我们在两个分支上都对同一个 `demo.txt` 文件做出了修改,现在我们尝试**合并**两个分支
![合并冲突](https://img-blog.csdnimg.cn/20200326143614118.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDM1NTU5MQ==,size_16,color_FFFFFF,t_70)
`cat demo.txt` 查看文件,并且给出了**不同**分支的冲突内容
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200326144242448.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDM1NTU5MQ==,size_16,color_FFFFFF,t_70)
看来我们只能修改`demo.txt` 内容来让他们合并了,我觉得master的修改不错,我选择master的修改,然后重新提交
![留下master的修改](https://img-blog.csdnimg.cn/20200326144902680.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDM1NTU5MQ==,size_16,color_FFFFFF,t_70)
最后删除 `branch_2` 分支
![删除 branch_2](https://img-blog.csdnimg.cn/20200326145028739.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDM1NTU5MQ==,size_16,color_FFFFFF,t_70)
到这里我们也知道了如果出现分支冲突要如何处理了,nice!

posted @ 2020-03-26 19:49  StrawberryJam  阅读(224)  评论(0)    收藏  举报