这样讲Git,你一定能听懂
软件使用指南 · 更新于2023/8/28 · 玉米哥
这是我写的第7篇文章,正在努力成长为一名合格的软件开发工程师(Software Development Engineer),记录自己学习的点点滴滴,如果喜欢我的文章,请留下您的小心心。感谢!
目录
如何安装Git
如何用Git进行版本控制
如何用Git进行团队合作
前言
在上一篇文章中,我讲解了远程过程调用的基本概念和分层设计,如果你感兴趣,请点击能看懂的RPC框架讲解 | 青训营。在今天的文章中,我主要讲解Git的使用指南。在我编程生涯的开始阶段,我或多或少地听说过Git或者Github,只知道我可以在Github上下载需要的某些工具,或者查看别人的源代码。除此之外一无所知。而我也不知道Git和Github有什么关系和区别。在今天的文章中,我就会逐一讲解相关的概念和知识点,现在就让我们开始吧。
如何安装Git
由于我的电脑是windows 10系统,所以下面的教程我将以Windows系统为例。
- 打开Git官方网站git-scm.com/download/wi…。
- 点击Click here to download字样进行下载。
- 打开安装包,根据提示安装即可。
如何用Git进行版本控制
安装好Git之后,我们就可以使用Git进行版本控制了。在讲解版本控制之前,我想先讲讲办公软件Word。
相信有不少大学生和我一样,在大学里常常会参加不少活动,保留不少策划文件,在你的文件夹中,可能会包含下面的一系列文件。
文件夹/
|-------策划案_v1.docx
|-------策划案_v2.docx
|-------策划案_v3.docx
|-------商业计划书_8_1.docx
|-------商业计划书_8_3.docx
|-------商业计划书_8_5.docx
|-------商业计划书_8_7.docx
可以看到,同样一份文件,每次修改都会产生一个新的版本,而这些版本通常使用日期、数字等方式来区别,这已经是在尽力维护好每一份文件的前提下做出的努力了。通常情况下,我们可能直接会一直在同一份文件上作出修改。如果修改顺利的情况下,那还好,但是倘若修改不顺,想要回到修改之前的内容,那可就叫天天不应叫地地不灵了。
而Git则能够很好的解决这样的问题。
假设我们有下面的文件夹结构,最开始文件夹中没有任何文件。
todo/
|-------
|-------
|-------
现在如果我想使用Git管理todo文件夹中的所有文件,我该如何做呢?答案很简单。
- 打开资源管理器并导航到todo文件夹。
- 在todo文件夹内部的空白处,点击右键菜单Git Bash Here。
- 在弹出的窗口中,输入命令
git init,然后确认。
这样做,我们就告诉Git,需要时刻关注todo文件夹内每个文件的动向了。
接下来,在todo文件夹中新建一个文件my_list.txt,内容如下。
起床
吃早饭
洗漱
敲代码
...
吃午饭
...
晚上十点前睡觉
继续新建一个文件girlfriend_list.txt,内容如下。
起床
看抖音
做一套刘耕宏体操
工作
...
吃午饭
...
做一套帕梅拉体操
晚上十二点睡觉
目前todo文件夹结构如下。
todo/
|-------my_list.txt/
|-------girlfriend_list.txt/
|-------
现在我们要查看Git是如何追踪这些文件的,在上一步打开的命令行窗口中,输入命令git status,你会得到下面的结果。
$ git status
On branch master
No commits yet
Untracked files:
(use "git add <file>..." to include in what will be committed)
girlfriend_list.txt
my_list.txt
nothing added to commit but untracked files present (use "git add" to track)
目前我们只需要关注Untracked files:行中的内容。可以看出来,Git检测到了todo文件夹中的新文件girlfriend_list.txt和my_list.txt。但是状态却是Untracked(尚未追踪的),有Untracked那必然会有对应的Tracked(已追踪的)。也就是说,我们可以选择文件夹内的新文件是否需要版本管理。
现在假如我们需要对这两个文本文件进行管理,在命令行中依次输入命令git add my_list.txt、git add girlfriend_list.txt。现在我们就可以对这两个文件进行版本控制了。
也可以使用
git add .将当前路径下的所有文件加入版本控制。
到现在为止,我们新建了两个文本文件,每个文件有着最初的内容,并让Git来追踪这两个文件。那么怎么样进行版本控制呢?很显然,现在my_list.txt和girl_friend.txt处于原始状态,我们要让Git记住这个原始的状态,即现在文件的内容有什么。
在命令行中输入命令git commit -m '新建了两个文本文件,并添加了一些初始内容'。
现在,这两个原始文件的版本就被Git“记住”了。-m ''表示与这个版本有关的一些内容,你可以根据自己的喜好修改。
如果我们想查看在某一个版本中文件的内容,该如何做呢?答案很简单,输入命令git show <commit-hash>。等等,先别急着输入,<commit-hash>指你要查看的某一个版本的版本号,那么刚才我们保存的那个版本,版本号到底是多少呢?是0吗?是1吗?
答案很简单,在命令行中输入git log即可。你会发现下面的内容。
$ git log
commit e04d65e1c38e2d81bd5a2631da9eb6d2bc7e67e2 (HEAD -> master)
Author: remain <remain.guo@qq.com>
Date: Mon Aug 28 21:22:38 2023 +0800
新建了两个文本文件,并添加了一些初始内容
你可以看到commit、Author、Date等字样,以及与该版本相关的内容。其中,我们让Git记住文件的某一个版本称为一次commit,而commit后面的一大串字符e04d65e1c38e2d81bd5a2631da9eb6d2bc7e67e2,就是这个版本的版本号。
找到我们第一次保存时的版本号之后,这下在命令行中输入命令git show e04d65e1c38e2d81bd5a2631da9eb6d2bc7e67e2即可查看这个版本的内容。
在你的电脑中,版本号可能和我的不一样,请以你自己查到的版本号为准。
我们原始版本的内容如下。
$ git show e04d65e1c38e2d81bd5a2631da9eb6d2bc7e67e2
commit e04d65e1c38e2d81bd5a2631da9eb6d2bc7e67e2 (HEAD -> master)
Author: remain <remain.guo@qq.com>
Date: Mon Aug 28 21:22:38 2023 +0800
新建了两个文本文件,并添加了一些初始内容
diff --git a/girlfriend_list.txt b/girlfriend_list.txt
new file mode 100644
index 0000000..bf77188
--- /dev/null
+++ b/girlfriend_list.txt
@@ -0,0 +1,9 @@
+起床
+看抖音
+做一套刘耕宏体操
+工作
+...
+吃午饭
+...
+做一套帕梅拉体操
+晚上十二点睡觉
\ No newline at end of file
diff --git a/my_list.txt b/my_list.txt
:
请注意最后一行的:符号,该符号表明内容并没有显示完毕,按下空格显示下一页,当所有内容显示完毕时,最后一行会显示(END),此时按下字母q即可退出内容显示,现在可以查看全部的内容了。
$ git show e04d65e1c38e2d81bd5a2631da9eb6d2bc7e67e2
commit e04d65e1c38e2d81bd5a2631da9eb6d2bc7e67e2 (HEAD -> master)
Author: remain <remain.guo@qq.com>
Date: Mon Aug 28 21:22:38 2023 +0800
新建了两个文本文件,并添加了一些初始内容
diff --git a/girlfriend_list.txt b/girlfriend_list.txt
new file mode 100644
index 0000000..bf77188
--- /dev/null
+++ b/girlfriend_list.txt
@@ -0,0 +1,9 @@
+起床
+看抖音
+做一套刘耕宏体操
+工作
+...
+吃午饭
+...
+做一套帕梅拉体操
+晚上十二点睡觉
\ No newline at end of file
diff --git a/my_list.txt b/my_list.txt
new file mode 100644
index 0000000..dc128f4
--- /dev/null
+++ b/my_list.txt
@@ -0,0 +1,8 @@
+起床
+吃早饭
+洗漱
+敲代码
+...
+吃午饭
+...
+晚上十点前睡觉
\ No newline at end of file
内容有很多,但目前我们只需要关注每行以+开头的内容就行。可以看到我的两个文件的所有内容。
等等,现在我的计划突然有变,由于参加青训营,每天十点没办法睡觉,需要更改到十一点,于是我打开my_list.txt,将睡觉时间修改为每天晚上十一点,并保存了这个更改。
很明显,文件的内容发生了变化,现在我要让Git记住这个新的版本。请在命令行中输入命令git commit -m '将我的睡觉时间延后一个小时'。
$ git commit -m '将我的睡觉时间延后一个小时'
On branch master
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: my_list.txt
no changes added to commit (use "git add" and/or "git commit -a")
等等,好像出了什么问题。原来是我没有指明需要对哪个文件进行版本的保存。在我们的文件夹中,有俩个文件。但是我只对my_list.txt做出了更改,那么只需要对my_list.txt进行版本的保存即可。而girl_friend.txt由于没有发生变化,自然不需要进行新版本的保存。
理清了这一点后,在命令行中先输入命令git add my_list.txt,表明我想要对这个修改过的文件进行新版本的保存。指明了文件后,再输入命令git commit -m '将我的睡觉时间延后一个小时'。这个全新的版本就保存成了。
到目前为止,我们已经为todo文件夹中的文件保存了两个版本。
根据我们学到的知识,现在我想要查看第二个版本的内容,首先要输入命令git log。
$ git log
commit 0a468adb984e6da94eced81a474c057c08bbf4cd (HEAD -> master)
Author: remain <remain.guo@qq.com>
Date: Mon Aug 28 22:08:43 2023 +0800
将我的睡觉时间延后一个小时
commit e04d65e1c38e2d81bd5a2631da9eb6d2bc7e67e2
Author: remain <remain.guo@qq.com>
Date: Mon Aug 28 21:22:38 2023 +0800
新建了两个文本文件,并添加了一些初始内容
找到第二个版本的版本号,即0a468adb984e6da94eced81a474c057c08bbf4cd。然后输入命令git show 0a468adb984e6da94eced81a474c057c08bbf4cd查看第二个版本的文件内容。
$ git show 0a468adb984e6da94eced81a474c057c08bbf4cd
commit 0a468adb984e6da94eced81a474c057c08bbf4cd (HEAD -> master)
Author: remain <remain.guo@qq.com>
Date: Mon Aug 28 22:08:43 2023 +0800
将我的睡觉时间延后一个小时
diff --git a/my_list.txt b/my_list.txt
index dc128f4..e1aca88 100644
--- a/my_list.txt
+++ b/my_list.txt
@@ -5,4 +5,4 @@
...
吃午饭
...
-晚上十点前睡觉
\ No newline at end of file
+晚上十一点前睡觉
\ No newline at end of file
哎?我们发现Git并没有为我们展示第二个版本的全部内容,只是展示了我们对文件做出修改的局部内容。原来Git是通过记录文件修改前后内容的差异来进行版本控制的。
下一步
阅读到这里,你是否对Git有了一个初步的认识呢,你对版本控制的印象是否更加深刻,如果你之前有看过别的Git教程,你可能会发现,我并没有提到诸如工作区、暂存区、分支等概念,原因是我们在最初的学习阶段,并不需要这些概念,而是从实际的需求出发,来讲解我们需要用到的命令等,这样学习曲线就会变得平缓。希望对你有所收获。
码字不易,如果您看到了这里,听我说谢谢你😀
如果您觉得本文还不错,请留下小小的赞😀
如果您有感而发,请留下宝贵的评论😀