前言
本文旨在帮助没有接触过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。
注意:在哪里点击右键,就会在哪个目录打开。如果在C盘打开,终端就会显示C盘;如果在某个项目文件夹打开,终端就会显示这个项目的目录。
Linux & Mac
Linux和Mac都内置了Git,直接打开终端即可。
注意:切换目录的方法,除了手动输入路径,也可以按下cd 之后,把文件夹直接拖到终端里面,终端直接就能显示路径。
Git是干啥用的?
Git最核心的功能是版本控制,不知道什么是版本控制也没关系,下面列举了几个使用场景:
- 比如你正在编写一个项目,当某个阶段完成之后,只需一键,现在的代码就会以“快照”的形式保存下来,无论以后怎么更改,都不会破坏当前的代码(类似快照功能)
- 当与别人合作的时候,只需一键,就可以把自己的代码和其他的代码合并,再也不需要手工复制粘贴了
- 如果你打算尝试几种不同的方案,使用分支功能,只需一键,就可以把你的代码在不同方案之间自由切换,不同方案之间单独开发,相互不影响。
- 如果代码出现重大错误,只需一键,直接乘坐时光机,回到之前的正常版本,妈妈再也不用担心我把软件写崩啦
总结成一句话就是:善用Git,可以降低代码被破坏的风险,提高开发效率。
什么是仓库?什么是GitHub?
一句话概述,一个普通的文件夹,如果用Git托管,它就是一个代码仓库。
仓库是一个整体,由于Git的托管,仓库里面的任何文件、任何代码发生了任何变更,都可以被Git记录下来。
有了这种代码追踪,极大的方便了代码的保存、恢复、提交。
仓库分为本地仓库和远程仓库。
本地仓库就是当前电脑上的仓库。远程仓库是团队合作时,服务器上的仓库,在本地和远程仓库之间,可以互相传输数据。
而GitHub就是远程仓库之一,GitHub上面的仓库可以共享给其他人或团队。此外,还有其他的远程仓库软件,甚至可以自己搭建一个仓库服务器。
起步:借助Git提高语言学习效率
许多优秀的教程,都在GitHub上提供了示例代码,并且按照教程的章节进行了划分(一节教程对应一节代码)。
借助Git,可以快速切换,保证当前的代码和教程的章节对应。
打开一套包含示例代码的教程,里面会有代码仓库的地址:
比如:https://github.com/yunzhiclub/thinkphp5.0guide
打开这个GitHub项目,里面就是全部的文件了。
如何把它下载到本地呢?
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完成:
文件夹中可以找到所有示例文件:
接下来就可以按照教程学习了。
git checkout 切换“保存点”
git checkout <保存点名>
如果你学习一门语言,教程学到了第二节,而自己代码还在第一节,但你又懒的照着教程敲一遍,怎么办呢?
由于教程的作者已经为代码设置了很多“保存点”,我们使用git checkout 命令,就可以任意切换这些“保存点”。
使用cd <文件夹名>
命令进入代码文件夹,可以看到出现了git:(master)字样,
此时输入git tag
,会显示作者设置的所有“保存点”:
查看完毕后按q退出
接下来就是切换了,比如我学到了第2.4章,使用
// 切换到某个保存点
git checkout step2.4
// 放弃当前代码,强制切换到某个保存点
git checkout -f step2.4
出现了下图:
说明切换成功,现在你的本地代码就和教程第2.4章一模一样了。
主要使用场景:合作开发
由于本部分涉及到分支的概念,初学者很难做到深刻理解,因此先提供操作,只要严格按照本文进行操作,就可以顺利进行。
简述分支
分支,就是字面意思,可以把代码分成几个互不影响的版本,比如,目前有三个一模一样的分支:master分支,A分支和B分支,如图:
它们的代码都是123。
如果我在A分支上把代码改成456,在B分支上把代码改成789,此时master分支的代码不受任何影响,还是123。
master作为项目主分支,一个优秀的团队,是不允许直接向master分支提交代码的。
规范的做法是在自己的分支上完成编写,然后向master分支提出合并代码的请求,由负责人进行审核,审核通过之后,会把代码合并到主分支上。
这就是团队开发的基本流程。
issue
既然是团队开发,就需要了解issue。
issue是“事件”的意思,也就是告诉其他成员,“我正在做什么,我想实现什么功能”,当别人看到你的issue后,就知道你正在做这件事,避免两个人写出重复的代码。
一个issue对应一个分支:
比如这个issue的编号是4,我们就在本地创建4分支:
git checkout -b 新建分支
如果我们当然在master分支上,输入:
// 创建名称是4的分支
git checkout -b 4
就成功创建了4分支:
之后所有的更改,都在4分支上进行,和主分支没有关系了。
git push 推送更改
当你的代码写完之后,回到终端,输入:
// 让git记录当前目录的所有文件
git add .
// 提交更改到本地仓库,备注信息随便写,比如写“我正在做什么”
git commit - m <备注信息>
// 将本地的更改推送到GitHub的4分支
git push origin <分支号>
这三条命令,可以把你的代码推送到GitHub上,还差最后一步
PullRequest
最后一步是发起合并请求。
在GitHub网站上新建PullRequest。
compare处填写自己刚刚上传的分支,
base处填写被合并的分支
上图的意思是,把自己的2分支合并到主分支上,主要不要写反!
点击提交后,剩下的就交给负责人审核了。
总结
讲的再多也没用,自己试一试,什么都明白了。
再说几句
记得去年我们刚开始做第一个练手的项目时,在Git方面遇到问题。
由于Git涉及到团队协作,如果任何一个人掌握不好,都会影响合作项目的代码安全(比如误删代码、提交了错误的代码,等等)。
出于这个原因,我提前向硕哥请教GitHub的基本用法,自己学会后再讲给小组的其他成员,因此保证了后来每次代码合并都平稳、安全的进行。
后面的内容会尽快更新。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。