以下内容是基于我对git这个分布式项目管理工具的理解,如有不对,还请见谅。
本文会从实际出发,带大家沉浸式地使用git,从git仓库的创建到整个项目的版本控制。
git介绍
Git 是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。Git 与常用的版本控制工具 CVS, Subversion 等不同,它采用了分布式版本库的方式,不必服务器端软件支持。
git安装
在linux上安装
这里以centos 7.9这个发行版本为例,直接在命令行窗口输入
$ yum install curl-devel expat-devel gettext-devel \ openssl-devel zlib-devel
$ yum -y install git-core
将git安装,然后输入
git --version或者git
查看是否安装上,如图
当看到git的版本就说明已经安装上了。
在macOS上安装
直接在终端命令行中安装Xcode,Xocde附带有git工具。
然后依然输入
git --version
查看git的版本,如图所示
在windows上安装
直接访问git官网进行对应版本下载安装
git官网:https://git-scm.com/download/win
git工作区、暂存区、版本库、本地库、远程库的概念
如果你想顺利地使用git,首先必须得了解git工作区、暂存区、版本库、本地库和远程库的概念已经区别。
工作区
it 的工作区(Working Directory)是指你在电脑中能够看到的项目目录,也就是包含项目源代码、文件和子目录的地方。在工作区中,你可以修改文件、添加新文件,进行各种操作。
工作区中的文件可以分为以下三种状态:
- 已跟踪: 这些是已经纳入版本控制的文件,Git 会追踪它们的变化。已跟踪文件可以进一步分为:
- 已修改: 表示文件已被修改,但还未添加到暂存区。
- 已暂存: 表示已经将文件的修改添加到暂存区,准备提交到版本库。
- 未跟踪: 这些是未被 Git 管理的文件,Git 不会追踪它们的变化。这些文件可能是新添加的,Git 还不知道它们的存在。
- 已忽略: 这些是在项目中被设置为忽略的文件,通常包括编译产生的临时文件、日志文件等。Git 不会对这些文件进行版本控制。
在工作区中进行的修改,可以通过一系列 Git 命令进行追踪、暂存和提交,将这些修改记录到版本库中。理解工作区的概念有助于更好地理解 Git 的工作机制和版本控制过程。
暂存区
Git 的暂存区是介于工作区和版本库之间的一个临时存储区域。它是一个用于存放即将提交到版本库的修改的地方,允许你选择性地将工作区中的变更加入到提交中。
在使用 Git 进行版本控制的过程中,暂存区有以下几个关键作用:
- 选择性提交: 工作区中的所有修改并不会一次性全部提交到版本库,而是通过暂存区,你可以选择性地将部分修改暂存起来,然后一次性提交到版本库。
- 准备提交: 将文件的修改先添加到暂存区,相当于为这些修改做了一个快照,然后再通过提交操作将这些快照永久保存到版本库中。
- 清晰变更: 暂存区可以帮助你清晰地了解即将提交的内容,可以在提交前检查并修改暂存区中的内容,确保提交的内容符合预期。
版本库
Git 的版本库是存储项目完整历史记录的地方。版本库包含了项目所有的版本、分支、标签等信息。在版本库中,你可以回溯到任何一个过去的状态,查看项目的演变历程。
版本库分为三个主要部分:
- 工作区: 工作区是你在电脑中看到的项目目录,包含源代码文件、子目录等。在工作区中,你可以修改文件、添加新文件等。
- 索引: 暂存区是一个临时的区域,用于存放你已经通过
git add 命令暂存起来的改动。在执行 git commit 命令前,将需要提交的修改放入暂存区。
- HEAD: HEAD 是指向当前所在分支最后一次提交的指针。它是一个特殊的指针,指向当前被检出的本地分支的最新提交。
本地库
Git 的本地库指的是存储在本地计算机上的 Git 版本库,包含了项目的完整历史记录、分支、标签等信息。本地库是每个参与项目的开发者在自己的计算机上拥有的一个副本。
远程库
Git 的远程库是指存储在远程服务器上的 Git 仓库,用于协作开发和团队合作。远程库允许多个开发者共享和协同工作,使得项目的版本控制更加灵活和高效。常见的大型开源远程库如github、gitee等。其中github又被称为世界上最大的同性交友网站哦😁
git的使用
了解完git,就开始git的使用吧。
接下来我以Apple的macOS sonoma(因为本人用的是这个系统啦)这个系统版本为例来讲解git是如果使用的
在桌面上新建文件夹,并命名为git_test
在文件夹中,新建一个文本文件,在文本文件中写入“这是测试git的文本文件1”,并命名为git_demo1
在这个文件夹上打开终端
在终端中输入
git init
初始化这个git仓库,即将这个文件夹用git管理
此时,输入
git status
查看git仓库的状态,发现有一个main分支上有一个未被跟踪的文本文件git_demo1.txt
接下来将这个未被跟踪的文本文件添加到git的暂存区,使用
git add git_demo1.txt
命令(注意:add后面添加想要添加到暂存区的文件名。如果想要添加文件夹中全部文件输入git add .)。此时再查看git仓库的状态,发现文件已成为已跟踪的文件(文件名的颜色由红色变为绿色),即表示这个文件现在可以在git仓库中进行操作了!
确认这个文件无误后,将这个文件再提交到本地的版本库,输入
git commit -m "第一次提交"
-m后跟的是这次提交的备注,以后查看git的详细提交信息,可以看到每一次提交的备注。提示一个文件已经被改变,添加了一行。此时,再查看git仓库的状态,会发现仓库的main分支为空,没有可以跟踪的文件,即表明仓库的文件已全被跟踪。
这时我们已经把把文件提交到本地的版本库了,是不是很简单呀😎
等等,git可不止这些呢
现在我们在文件夹中新建第二个文本文件,命名为git_demo2
重复上述步骤,输入
git add git_demo2.txt
git commit -m "第二次提交"
将git_demo2.txt这个文件提交到版本库中。
好了,现在git的版本库中有两次文件的提交,输入
git log
查看历史提交记录。我们可以看到两次提交的详细信息,例如提交哈希、分支信息、作者信息、提交时间、提交消息等。这就是git的一大好处,每一次提交都有记录,有利于问题的追根溯源。
在git中,一个重要的功能是可以实现版本的回溯,下面我来演示一下。
要回溯到之前的版本,首先在要回溯的那个版本中找到提交哈希,并将其复制下来。然后输出
git reset --hard 085eb5196db3ee14337f5d0c5b4de11de5695e06
并输入git log ,会发现hard指针指向第一次提交的那个版本。文件夹中第二次提交的git_demo2.txt文本文件也不见了,完全回到了第一次提交时候的状态。
神奇吧,git很牛逼。如果在项目中改错了代码,想回到之前的版本,就用这个方法,项目立马恢复原样。
现在我们在文件夹中新建git_demo3.txt文本文件,并按照上述方法提交到暂存区,但这时假如这个文件有问题,想撤下暂存区,回到未被跟踪的状态。我们输入
git rm --cahed git_demo3.txt
即可将删除文件从暂存区删除。
这就是git的基本操作,git的操作还没有讲完,后面会更新几篇博客,将git讲完🤣
参考资料
git官网:https://git-scm.com/book/zh/v2/%E8%B5%B7%E6%AD%A5-%E5%AE%89%E8%A3%85-Git
菜鸟教程:https://www.runoob.com/git/git-tutorial.html
chatgpt3.5:https://chat.openai.com
太牛啦!!!
好厉害
哈哈