11

前言

本文旨在帮助没有接触过Git的同学使用Git以及GitHub的基本功能,适用于初学者。

由于Git是一门工具,合理的学习过程,应该是先知道怎么用,再去理解仓库、分支、冲突等等概念。因此本文把各种操作按照新手的学习曲线进行编排,方便初学者循序渐进。

由于内容比较多,一次写不完,故做成连载,以后还会更新其它内容。

推荐阅读:
菜鸟教程https://www.runoob.com/git/gi...
廖雪峰的Git教程https://www.liaoxuefeng.com/w...
分支学习神器(强烈推荐)https://learngitbranching.js....
上面的教程学好了,本文就没必要看了,哈哈哈

安装

Windows:

前往:https://git-scm.com/downloads
下载Windows版本,无脑下一步。安装完毕

如何启动Git?

在任何位置右键 -> Git Bash Here即可在当前目录打开Git。

image.png

注意:在哪里点击右键,就会在哪个目录打开。如果在C盘打开,终端就会显示C盘;如果在某个项目文件夹打开,终端就会显示这个项目的目录。
image.png

Linux & Mac

Linux和Mac都内置了Git,直接打开终端即可。

注意:切换目录的方法,除了手动输入路径,也可以按下cd 之后,把文件夹直接拖到终端里面,终端直接就能显示路径。

May-23-2020 13-48-51.gif

Git是干啥用的?

Git最核心的功能是版本控制,不知道什么是版本控制也没关系,下面列举了几个使用场景:

  • 比如你正在编写一个项目,当某个阶段完成之后,只需一键,现在的代码就会以“快照”的形式保存下来,无论以后怎么更改,都不会破坏当前的代码(类似快照功能)
  • 当与别人合作的时候,只需一键,就可以把自己的代码和其他的代码合并,再也不需要手工复制粘贴了
  • 如果你打算尝试几种不同的方案,使用分支功能,只需一键,就可以把你的代码在不同方案之间自由切换,不同方案之间单独开发,相互不影响。
  • 如果代码出现重大错误,只需一键,直接乘坐时光机,回到之前的正常版本,妈妈再也不用担心我把软件写崩啦

总结成一句话就是:善用Git,可以降低代码被破坏的风险,提高开发效率

什么是仓库?什么是GitHub?

一句话概述,一个普通的文件夹,如果用Git托管,它就是一个代码仓库

仓库是一个整体,由于Git的托管,仓库里面的任何文件、任何代码发生了任何变更,都可以被Git记录下来。

有了这种代码追踪,极大的方便了代码的保存、恢复、提交。

仓库分为本地仓库远程仓库

本地仓库就是当前电脑上的仓库。远程仓库是团队合作时,服务器上的仓库,在本地和远程仓库之间,可以互相传输数据。

而GitHub就是远程仓库之一,GitHub上面的仓库可以共享给其他人或团队。此外,还有其他的远程仓库软件,甚至可以自己搭建一个仓库服务器。

起步:借助Git提高语言学习效率

许多优秀的教程,都在GitHub上提供了示例代码,并且按照教程的章节进行了划分(一节教程对应一节代码)。

借助Git,可以快速切换,保证当前的代码和教程的章节对应。

打开一套包含示例代码的教程,里面会有代码仓库的地址:
比如:https://github.com/yunzhiclub/thinkphp5.0guide

打开这个GitHub项目,里面就是全部的文件了。
image.png

如何把它下载到本地呢?

git clone 把远程仓库代码复制到本地

第一个命令: git clone <仓库地址> <本地文件夹地址>

需要注意的是,命令在哪个目录执行,代码就会clone到哪里,所以clone前需要先确定文件夹位置,使用cd命令跳转到你要clone的文件夹。

// 使用方法

// 把远程仓库的代码下载到本地的当前文件夹
git clone <仓库地址> 
// 示例
git clone https://github.com/yunzhiclub/thinkphp5.0guide.git

// 把远程仓库的代码下载到特定的文件夹中
git clone <仓库地址> <本地文件夹的地址>
// 示例,克隆到PHP文件夹
git clone https://github.com/yunzhiclub/thinkphp5.0guide.git PHP

出现以下提示,说明clone完成:
image.png
文件夹中可以找到所有示例文件:
image.png
接下来就可以按照教程学习了。

git checkout 切换“保存点”

git checkout <保存点名>

如果你学习一门语言,教程学到了第二节,而自己代码还在第一节,但你又懒的照着教程敲一遍,怎么办呢?

由于教程的作者已经为代码设置了很多“保存点”,我们使用git checkout 命令,就可以任意切换这些“保存点”。

使用cd <文件夹名>命令进入代码文件夹,可以看到出现了git:(master)字样,
image.png

此时输入git tag,会显示作者设置的所有“保存点”:
image.png

查看完毕后按q退出

接下来就是切换了,比如我学到了第2.4章,使用

// 切换到某个保存点
git checkout step2.4

// 放弃当前代码,强制切换到某个保存点
git checkout -f step2.4

出现了下图:
image.png

说明切换成功,现在你的本地代码就和教程第2.4章一模一样了。

主要使用场景:合作开发

由于本部分涉及到分支的概念,初学者很难做到深刻理解,因此先提供操作,只要严格按照本文进行操作,就可以顺利进行。

简述分支

分支,就是字面意思,可以把代码分成几个互不影响的版本,比如,目前有三个一模一样的分支:master分支,A分支和B分支,如图:

image.png

它们的代码都是123。

如果我在A分支上把代码改成456,在B分支上把代码改成789,此时master分支的代码不受任何影响,还是123。

image.png

master作为项目主分支,一个优秀的团队,是不允许直接向master分支提交代码的。

规范的做法是在自己的分支上完成编写,然后向master分支提出合并代码的请求,由负责人进行审核,审核通过之后,会把代码合并到主分支上。

image.png

这就是团队开发的基本流程。

issue

既然是团队开发,就需要了解issue。

image.png

issue是“事件”的意思,也就是告诉其他成员,“我正在做什么,我想实现什么功能”,当别人看到你的issue后,就知道你正在做这件事,避免两个人写出重复的代码

一个issue对应一个分支:
image.png

比如这个issue的编号是4,我们就在本地创建4分支:

git checkout -b 新建分支

如果我们当然在master分支上,输入:

// 创建名称是4的分支
git checkout -b 4

就成功创建了4分支:
image.png

之后所有的更改,都在4分支上进行,和主分支没有关系了。

git push 推送更改

当你的代码写完之后,回到终端,输入:

// 让git记录当前目录的所有文件
git add .

// 提交更改到本地仓库,备注信息随便写,比如写“我正在做什么”
git commit - m <备注信息>

// 将本地的更改推送到GitHub的4分支
git push origin <分支号>

这三条命令,可以把你的代码推送到GitHub上,还差最后一步

PullRequest

最后一步是发起合并请求。

在GitHub网站上新建PullRequest。

compare处填写自己刚刚上传的分支
base处填写被合并的分支

image.png

上图的意思是,把自己的2分支合并到主分支上,主要不要写反!

点击提交后,剩下的就交给负责人审核了。

总结

讲的再多也没用,自己试一试,什么都明白了。

再说几句

记得去年我们刚开始做第一个练手的项目时,在Git方面遇到问题。
由于Git涉及到团队协作,如果任何一个人掌握不好,都会影响合作项目的代码安全(比如误删代码、提交了错误的代码,等等)。
出于这个原因,我提前向硕哥请教GitHub的基本用法,自己学会后再讲给小组的其他成员,因此保证了后来每次代码合并都平稳、安全的进行。

后面的内容会尽快更新。

本文作者:河北工业大学梦云智开发团队 刘宇轩


LYX6666
1.6k 声望75 粉丝

一个正在茁壮成长的零基础小白