美文网首页
Git 与 GitHub

Git 与 GitHub

作者: 那年冬季的寒冰 | 来源:发表于2020-01-21 17:49 被阅读0次

一、Git 与 GitHub 的历史

你来了,快坐下,今天我们来讲讲编程界的两大神器: GitGithub

图片描述

GitGithub 都是程序员每天都要用到的东西 —— 前者是目前最先进的 版本控制工具,拥有最多的用户,且管理着地球上最庞大的代码仓库;而后者是全球最大 同性交友 代码托管平台、开源社区

如果你之前没接触过「版本控制」的概念,看到这里一定是一脸 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 大概长这样:

图片描述

在没有这两个工具时,编程可能是这样的:

  • 哪个同事修改了我的代码🔪我要杀了他
  • 我把自己的代码改崩溃了🙂️我选择自杀
  • 电脑崩溃、硬盘损坏、中毒,几万行代码找不到了😱

但有了他们,一切都不一样了:

  • 同步代码到网络仓库,在家里写好代码上传,回到公司就可以继续写了,而且不怕丢失。
  • 记录每次代码的修改,即使把程序写崩了,也能即使回溯到上一个版本。这在产品更新时也经常使用。
  • 可以多人协作完成项目,每个人的提交都有清晰的记录。

你也会不断用到 GitGithub,把你完成的项目、学习记录,同步在 Github 的仓库中。这样做的结果是:你将有一份 非常漂亮的 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 来控制本地目录demo?

在demo目录中右键点击 git bash here打开git命令窗口,在命令行内输入 git init 即可。

git init
image.png

这是 Git 的初始化操作,作用是将一个已存在文件夹,置于 Git 的控制管理之下。

ls -la 命令,会发现一个名叫 .git 的目录被创建了,这意味着仓库初始化成功。可以进入到 .git 目录查看下有哪些内容。

image.png

Git 提交代码的基本流程是这样的:

  • 创建或修改 本地文件
  • 使用 git add 命令,将创建或修改的文件添加到本地的 暂存区,这里保存的是你的临时更改
  • 使用 git commit 命令,提交文件到 本地仓库
  • 使用 git push命令,将本地代码库同步到 远端仓库
图片描述

目前为止,我们实现了第一步,创建了一个文件,我们的最终目标是:将本地的 demo 仓库,同步到 GitHub 上的 demo 仓库中。

💡 git add

使用 git add + 文件名/目录名 命令,可以将你需要同步的文件,添加到本地的暂存区。我们先进入 demo 目录,然后把 README.md 文件添加一下:

$ git add README.md

输入 git status ,可以检测当前目录和暂存区的状态,查看哪些修改被暂存了:

$ git status
On branch master

No commits yet

Changes to be committed:
  (use "git rm --cached <file>..." to unstage)
        new file:   README.md

可以看到我们刚刚 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 提交。

$ git commit -m "fisrt commit"
[master (root-commit) d1202f9] fisrt commit
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 README.md

⚠️ 注意:每次提交,您都必须用 -m + '注释' 编辑注释信息 。它不仅能协助您辨别不同的版本,而且能让你理解,自己当时对文件做了什么修改。

比如当你每次在文件中添加了新的代码后,你可以写一句提交信息:“添加了 XXX 代码” —— 当你一个月后回来看提交记录或者 Git 日志 时,你还能知道当时做了什么。

三、与 Github 仓库同步

终于到了激动人心的时刻,我们要把本地仓库提交到远端仓库(即 Github 仓库)中。

💡 连接 Github 仓库

使用如下命令,将本地仓库连接到 GitHub 仓库中:

git remote add origin 仓库链接

仓库链接请在这里复制,并用剪切板功能粘贴进去:

! image.png

我们分析一下这个命令,首先 remote 的意思是远程

图片描述

add 很容易明白 —— 添加。git remote add 表示通知 Git 去添加一个远程仓库,后面接上的 origin 是这个仓库的小名,方便以后沟通,通常默认用 origin 来表示;最后再接上远程仓库的地址,即你刚刚创建的 Github 仓库链接。

图片描述

💡 push 命令

push 顾名思义,就是推送, 使用 push 可以把本地仓库推送到远端仓库中。

具体命令如下:

git push origin master

执行后,GitHub服务器 需要验证你的身份,按提示输入你的用户名和密码即可完成 push 同步。

⚠️ 注意:在Linux 中输入密码是不可见的,输完后直接按回车键即可。

CBI-IT-05@DESKTOP-5HSUPIA MINGW64 /d/project/demo (master)
$ git remote add origin https://github.com/cfe/demo.git

CBI-IT-05@DESKTOP-5HSUPIA MINGW64 /d/project/demo (master)
$ git push origin master
Enumerating objects: 3, done.
Counting objects: 100% (3/3), done.
Writing objects: 100% (3/3), 211 bytes | 211.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To https://github.com/cfe/demo.git
 * [new branch]      master -> master

CBI-IT-05@DESKTOP-5HSUPIA MINGW64 /d/project/demo (master)
$gti

接下来就是见证奇迹的时刻 —— 再刷新你的 Github 仓库,就会发现多了这些东西:

! image.png

💡分支的概念:分支在多人协作中经常会被用到,但前期我们用不到这个功能,为了不给你增加认知负担,这里就先不讲了。你只需知道 Git 管理的项目进程中,有一条默认的主分支 - master 即可。(想象 Git 是一棵树,master 就是树干,树干上还可以生出很多分支来,如 master 2.0、master 3.0 等)

四、克隆 GitHub 上的仓库

本节实验最后一个知识点是 git clone 命令,它可以帮你拷贝一个 Git 仓库到本地,让自己能够查看该项目,或者进行修改。

图片描述

如果你想要复制一个项目,看看代码,或者把自己的远程仓库复制到本地,可以执行命令:

git clone [url]

[url] 指的就是你想复制的仓库,我们在 github.com 上提供了一个名字为 gitproject 的公开仓库, 供大家测试,现在你要把这个仓库复制到实验环境中,只需输入:

$ git clone https://github.com/cfe/demo.git

相关文章

网友评论

      本文标题:Git 与 GitHub

      本文链接:https://www.haomeiwen.com/subject/xhuezctx.html