同学们,你来了,快坐下,今天我们来讲讲编程界的两大神器: Git 和 Github。
Git 和 Github 都是程序员每天都要用到的东西 —— 前者是目前最先进的 版本控制工具,拥有最多的用户,且管理着地球上最庞大的代码仓库;而后者是全球最大 同性交友 代码托管平台、开源社区。中国版的Github码云,咱们作为作业使用,因为它服务器在国内访问速度快,现在大家可以跟着我讲解,先一步一步注册和使用Github。
如果你之前没接触过「版本控制」的概念,看到这里一定是一脸 xx 的,别急,看了这篇文章你一定能明白:
什么是版本控制
简单复述一下文章中的例子:
大四毕业生 小张 在写 毕业论文,他经常删删改改,有时还会后悔“昨天那个思路那么好,我怎么就给删了”……
有了多次教训后,他决定每次写之前都先复制一份,在复制的那份里修改,这么一来,文件夹里有了:
毕业论文_初稿.doc 毕业论文_修改1.doc 毕业论文_修改2.doc 毕业论文_修改3.doc 毕业论文_完整版1.doc 毕业论文_完整版2.doc 毕业论文_完整版3.doc 毕业论文_最终版1.doc 毕业论文_最终版2.doc 毕业论文_确定版1.doc 毕业论文_确定版2.doc ……
小张想:“虽然很痛苦,但不至于丢掉以前的灵感了吧……等等,最终版和确定版哪个是昨天写的来着???”
同时,他还要把论文发给学霸女友求帮忙,第二天他的文件夹里又有了:
毕业论文_最终版3.doc 毕业论文_女友版1.doc 毕业论文_女友版2.doc
几星期的煎熬下来,文件夹里多了几十份文件,小张的论文也快成型了,是时候把自己和女朋友的内容合并起来了。
这时又发生了一件喜闻乐见的事:U 盘中病毒了,而电脑里只有 1 个月前的版本……
如何拯救生无可恋的小张?其实,如果小张一早知道用「版本控制」工具就好了,他的文件可以整整齐齐地排列,就像这样:
“哎呀,早知道能这样,就不用手动控制那么多版本啦!”
但这还不够,如果能有一个支持「论文托管 + 论文版本控制」的网站就更好了。这样一来,小张不但能和女朋友合作编辑内容,还不用担心因电脑故障,导致之前论文版本的丢失。
这时 —— 论文Hub 出现了,它可以帮你托管论文,而且和版本控制工具无缝连接。
越来越多人发现了 论文Hub 的好处,相继把论文托管在论文 Hub 上 ,网站上的论文越来越多。一些优秀的作者还会把论文开源出来,让每个人都可以查阅、交流、学习……
慢慢的,论文 Hub 变成了全球最大的「交友社区」,并逐渐演化成了一种时尚 —— 找工作时,面试官会先问你有没有 论文 hub 的账号,有多少个赞、多少粉丝;而有优秀作品的人,会被大公司争抢录用……
这个 论文 hub,就是我们今天要学习的 Github ,只不过论文换成了程序代码。Github 大概长这样:
在没有这两个工具时,编程可能是这样的:
- 哪个同事修改了我的代码?我要杀了他
- 我把自己的代码改崩溃了?️我选择自杀
- 电脑崩溃、硬盘损坏、中毒,几万行代码找不到了?
但有了他们,一切都不一样了:
- 同步代码到网络仓库,在家里写好代码上传,回到公司就可以继续写了,而且不怕丢失。
- 记录每次代码的修改,即使把程序写崩了,也能即使回溯到上一个版本。这在产品更新时也经常使用。
- 可以多人协作完成项目,每个人的提交都有清晰的记录。
在之后的学习中,你也会不断用到 Git 和 Github,把你完成的项目、学习记录,同步在 Github 的仓库中。这样做的结果是:你将有一份 非常漂亮的 Github 主页,能给你的简历加分很多。
接下来,我们将学习 Git 的基本操作,并注册 Github 账户,建立你的第一个代码仓库!
知识点:
- 版本控制
- Git 和 Github的历史
- 在 GitHub 创建仓库
- 添加修改到暂存区
- 提交代码
- 同步远程仓库
Git 和 Github的历史
Linux 之父 林纳斯(Linus) 在 1991 年创建了开源的 Linux 系统,随着 Linux 代码量越来越大,合并志愿者提交的代码已经无法依靠人工完成,所以 林纳斯 选择了商业的管理软件 BitKeeper ,来管理 Linux 的代码版本。
在 2005 年,BitKeeper 公司发现,有 Linux 社区的人试图破解 BitKeeper 软件,他们决定收回 Linux 社区的免费使用权。林纳斯 对此事调解数周无果,决定自己搞一个。他花了十天时间用 C 语言写好了一个开源的版本控制系统,就是著名的 Git。
(先写出一个操作系统,再用 10 天写出 Git,林纳斯已经不能用大神来形容,只能理解为外星人来技术扶贫的)
2007 年,旧金山的三个年轻人觉得 Git 是个好东西,创建一个公司名字叫 GitHub,第二年上线了使用 Ruby 编写的同名网站。这是一个基于 Git 的免费代码托管网站(有付费服务),十年间迅速蹿红,击败了实力雄厚的 Google Code,成为全世界最受欢迎的代码托管网站。根据 2018 年 10 月的 GitHub 年度报告显示,目前有 3100 万开发者创建了 9600 万个项目仓库,有 210 万企业入驻。
值得一提的是,GitHub 的 创始人、CEO —— Wanstrath 是一位大学肄业,自学成才的程序员。而他大学的专业是英语,相当于我们的“汉语言文学”专业,是一名地地道道的 “文科生” ,如今,他的身家可能超过了10亿美元,也算是一位自学编程成才的标志人物吧。
git的安装及使用Github 和gitee(码云)的完整操作
Git 是一个版本控制系统,可以理解为一个工具,使用之前必须得先下载安装,所以第一步必须要安装。
- Windows:GitForWindows
- Mac系统安装:git-osx-installer
- Linux:在终端输入命令行安装
- Debian系列:apt-get install git
- Fedora上:yum install git-core
咱们这节课主要讲讲git在 windows的安装和使用
1、git软件的安装:https://git-scm.com/downloads
mac系统是自带的不用安装
windows系统安装:下载好的软件一路下一步即可。
2、安装好的显示:在任意目录下点击右健,出现git 的两个菜单就代表安装成功
下面,我们分别通过一次上传 Github 和gitee(码云)的完整操作,实践学习 Git 的常用功能。
Github的完整操作
首先,申请一个 Github 账户
打开 GitHub,你可以在主页的 banner 上快速注册,或者点击右上角的 Sign up
注册。
下一步,我们选择创建一个免费账户。
下一步,回答两个问题,也可以在最下面选择跳过:
最后,去注册邮箱中接收验证邮件,验证后,自动用新注册账户登陆,进入 Github 主页。
第二步,我们来新建一个代码仓库
仓库( repository),可理解为储存代码的场所,点击个人主页的右上角的加号,再点击 New repository
,即可创建新的仓库:
然后给你的仓库命名(比如说 Demo),然后点击 Create Repository,无需考虑本页面的其他选项。
创建后,页面跳转到新建仓库的主页面,第一步成功了!
下面我们以Linux系统为例,码云以windows为例,建议大家熟悉一下Linux系统及相关命令。
让我们在本地新建一个文件,最后上传到刚刚创建的仓库中。
如果你本来就熟悉Linux系统,那么在的你在 Linux 中创建文件,应该很轻车熟路了吧:
mkdir Demo cd Demo gedit README.md
然后在打开的文件中输入 #Demo,保存文件后关闭 gedit 。
用 cat 命令查看一下文件内容:
创建文件 OK 了,但现在,Demo 目录还只是一个普通的目录,我们如何用 Git 来控制这个目录?
你只需在 Demo 目录中,输入 git init 即可。
git init
这是 Git 的初始化操作,作用是将一个已存在文件夹,置于 Git 的控制管理之下。
再 ls -la 命令,会发现一个名叫 .git 的目录被创建了,这意味着仓库初始化成功。可以进入到 .git 目录查看下有哪些内容。
Git 提交代码的基本流程是这样的:
- 创建或修改 本地文件
- 使用 git add 命令,将创建或修改的文件添加到本地的 暂存区,这里保存的是你的临时更改
- 使用 git commit 命令,提交文件到 本地仓库
- 使用 git push命令,将本地代码库同步到 远端仓库
目前为止,我们实现了第一步,创建了一个文件,我们的最终目标是:将本地的 Demo 仓库,同步到 GitHub 上的 Demo 仓库中。
? git add
使用 git add + 文件名/目录名
命令,可以将你需要同步的文件,添加到本地的暂存区。我们先进入 DEMO 目录,然后把 README.md 文件添加一下:
cd /home/shiyanlou/Demo git add README.md
输入 git status
,可以检测当前目录和暂存区的状态,查看哪些修改被暂存了:
可以看到我们刚刚 add
的文件已经被初始提交了。
? git commit
git commit
提交是你工作的一个里程碑 —— 每当你完成一些工作,都可以创建一次提交,保存当前的版本。
这样一来,无论你何时修改了文件,都创建一个新版本的文件,你可以很方便地查看以往所有版本的文件和内容。
在提交之前,你必须先设置你的名字和 email,这是你在提交 commit 时的签名,每次提交记录里都会包含这些信息。
使用 git config 命令进行配置:
$ git config --global user.name "YourName" $ git config --global user.email "YourEmail@xxx.com"
完成配置后,我们可以创建提交了,请输入:
git commit -m "first commit"
commit
的语法结构是 git commit -m "注释"
,通过上个命令,你创建了一条注释为 “first commit” 的 Git 提交。
⚠️ 注意:每次提交,您都必须用 -m + '注释'
编辑注释信息 。它不仅能协助您辨别不同的版本,而且能让你理解,自己当时对文件做了什么修改。
比如当你每次在文件中添加了新的代码后,你可以写一句提交信息:“添加了 XXX 代码” —— 当你一个月后回来看提交记录或者 Git 日志 时,你还能知道当时做了什么。
终于到了激动人心的时刻,我们要把本地仓库提交到远端仓库(即 Github 仓库)中。
? 连接 Github 仓库
使用如下命令,将本地仓库连接到 GitHub 仓库中:
git remote add origin 仓库链接
仓库链接请在这里复制,并用剪切板功能粘贴进去:
我们分析一下这个命令,首先 remote 的意思是远程:
add
很容易明白 —— 添加。git remote add
表示通知 Git 去添加一个远程仓库,后面接上的 origin
是这个仓库的小名,方便以后沟通,通常默认用 origin
来表示;最后再接上远程仓库的地址,即你刚刚创建的 Github 仓库链接。
? push 命令
push
顾名思义,就是推送, 使用 push
可以把本地仓库推送到远端仓库中。
具体命令如下:
git push origin master
执行后,GitHub服务器 需要验证你的身份,按提示输入你的用户名和密码即可完成 push 同步。
⚠️ 注意:在Linux 中输入密码是不可见的,输完后直接按回车键即可。
接下来就是见证奇迹的时刻 —— 再刷新你的 Github 仓库,就会发现多了这些东西:
?分支的概念:分支在多人协作中经常会被用到,但前期我们用不到这个功能,为了不给你增加认知负担,这里就先不讲了。你只需知道 Git 管理的项目进程中,有一条默认的主分支 - master
即可。(想象 Git 是一棵树,master
就是树干,树干上还可以生出很多分支来,如 master 2.0、master 3.0 等)
最后一个知识点是 git clone
命令,它可以帮你拷贝一个 Git 仓库到本地,让自己能够查看该项目,或者进行修改。
如果你想要复制一个项目,看看代码,或者把自己的远程仓库复制到本地,可以执行命令:
git clone [url]
[url] 指的就是你想复制的仓库,比如在 github.com
上提供了一个名字为 gitproject
的公开仓库, 供大家测试,现在你要把这个仓库复制到实验环境中,只需输入:
$ cd /home/shiyanlou/ $ git clone https://github.com/shiyanlou/gitproject
操作完成后,会发现 /home/shiyanlou 目录下多了一个 gitproject 文件夹,这个文件夹里的内容就是我们刚刚 clone 下来的代码。
关于 Git
的在Linux系统下的常用操作我们就学到这里。
gitee(码云)账户的创建及使用
大家扫码进行注册,这是我申请的高校版,提供的配额资源如下:
一、如下图,接受邀请并注册
二、可以一键微信注册,后绑定手机,修改姓名,请修改为17计科+班级+姓名
三、创建仓库
四、点击【创建】:创建成功后显示
五、仓库的其它说明:
Wiki:写开发文档
lssues:写凝问的
六、上传git文件:
(1):在自己PC硬盘上创建一个文件夹,不要使用中文,建议放到根目录便于查找。(备注:也就是创建工作空间,所谓工作空间其实就是我们在操作系统上的工作目录。我们能够通过操作系统的文件管理命令进行查看(例如在Linux上通过ls命令)在Linux平台执行如下命令即可。
mkdir gittest
然后切换到该目录,并在里面随便创建一个文件,可以执行如下命令。
cd gittest
echo "hello itworld123" > test.md
完成上述操作后,我们可以看一下工作空间(其实就是一个本地目录,没有什么高大上的)。)
(2):进入这个目录,这个目录是存放自己的代码的根目录,右键点击【Git Bash Here】。mact系统 没有这个功能,即用最上面的说明。
(3)、 让git把这个文件夹管理起来,即初始化: git init(备注:就是创建本地仓库 创建本地仓库其实非常简单,保持在刚才创建的文件夹内部(工作空间)。通过执行git init命令就可以初始化一个本地仓库。 完成本地仓库的创建之后,我们可以看到在目录下多出一个.git的隐藏目录,Git就是通过这个目录里面的内容实现版本控制的。)
(4)、get add . 将当前文件夹下的文件收集起来,用于上传给码云
(5)、第一次上传时,需要设置邮箱及姓名,这个步骤只在第一次时执行,
当安装完 Git 应该做的第一件事就是设置你的用户名称与邮件地址。 这样做很重要,因为每一个 Git 的提交都会使用这些信息,并且它会写入到你的每一次提交中,不可更改,再次强调,如果使用了 --global
选项,那么该命令只需要运行一次,因为之后无论你在该系统上做任何事情, Git 都会使用那些信息。 当你想针对特定项目使用不同的用户名称与邮件地址时,可以在那个项目目录下运行没有 --global
选项的命令来配置。
git config --global user.email "自己的邮箱"
git config --global user.name "姓名"
git remote add origin https://gitee.com/........ 这个url用origin来代表,意思是不用每次都敲这个url地址,而用origin这个别名来代替。这个url即码云里的那个地址 备注:这句话很关键
(6)、git commit -m "写本次修改的内容" # 这个是用于做个记录
(7)、git push origin master --将 git add . 收集上来的文件,用git工具提交到变量origin变量所对应的那个仓库的master分支下。备注:origin是变量!origin是变量!origin是变量!如果接下来你用上面的同样的命令git remote add origin https://gitee.com/........ 但这次的这个URL与上面的不同 那么origin这个变量就代表这次的URL了 master 是仓库的一个分支的名字
第一次使用时需要输入用户名及密码,这个用户名及密码,是码云的用户名及密码。
(8)、如果要在该仓库下创建其它分支,可用如下命令(现在可以不学):
创建分支要用命令
git checkout -b <分支名>
查看当前分支名,使用命令
git branch
当前分支前面会加一个* 号
回顾一下本节课学到的内容:
• 版本控制
• Git 和 Github的历史
• 在 GitHub 创建仓库
• 添加修改到暂存区
• 提交代码
• 同步远程仓库
之后,请你把这些操作整理在脑图中,类似这样:
? 综合练习
现在有 Github 账户,为何不把这几天的学习记录下来呢?
你可以在 Github 中新开一个仓库,起名为「Louplus」,然后把这几天的笔记或脑图都放进去,这样做的好处是:
• 方便之后查阅
• 漂亮的学习记录,可以激励你以后的学习
• 这将是你未来求职最好的证明
我们为你准备了四张从 Linux 到 Python 到 Git 的学习脑图,请你试着用今天学到的内容,上传到 Louplus 的仓库中:
? 步骤:
- 在 Github 的个人主页中新建一个仓库,命名为 Louplus
- 复制仓库链接,在实验环境中,将该仓库克隆到本地
- 进入本地的仓库目录,输入以下命令,下载我们之前的学习脑图(下面的脑图是python相关课程的知识图,作为训练,可以用剪切板一口气把四行命令粘贴进去):
wget https://labfile.oss.aliyuncs.com/courses/1330/linux.png
wget https://labfile.oss.aliyuncs.com/courses/1330/python1.png
wget https://labfile.oss.aliyuncs.com/courses/1330/python2.png
wget https://labfile.oss.aliyuncs.com/courses/1330/git.png - 使用 git add --all 命令,添加仓库内的所有文件
- 使用 git commit、git remote、git push 命令,将本地仓库同步到 Github 中
完成后,再次刷新你的 Github 仓库,4 张图片就这么被上传了~
最后,不要忘了做我们的最终挑战~
最终挑战很简单:请你把上个挑战完成的代码文件,传到自己的 Github 和码云上。
最终挑战也很重要:从现在开始,就请养成良好的代码上传习惯,不管是学习中的代码、挑战中的代码,都可以上传到 Github 和码云上,你的代码仓库将是你未来的财富。
胜利就在前方,加油 ~
最后要感谢 git的创建者们 实验楼的相关老师 github的创建者以及码云提供的高校版托管服务 以及 语雀提供的相关资源