自动化部署——Git之初识Git及Git命令的详细使用

一、Git原理

1.1 什么是Git

Git 是一种在全球范围都广受欢迎的 分布式版本控制系统。它就没有中央服务器的,每个人的电脑就是一个完整的版本库,工作的时候就不用联网了,因为版本都是在自己的电脑上。最初Git是为辅助 Linux 内核开发的。Git的作者是Linux之父李纳斯·托沃兹。

  • 什么又是版本控制呢? 版本控制(Revision control)是一种在开发的过程中用于管理我们对文件、目录或工程等内容的修改历史,方便查看更改历史记录,备份以便恢复以前的版本的软件工程技术。简单说就是用于管理多人协同开发项目的技术。
  • 优点:适合分布式开发,强调个体;任意两个开发者之间可以很容易的解决冲突;离线工作;速度快、灵活;公共服务器压力和数据量都不会太大。

1.2 Git 工作流程

一般工作流程如下:

  1. 克隆 Git 资源作为工作目录。
  2. 在克隆的资源上添加或修改文件。
  3. 如果其他人修改了,你可以更新资源。
  4. 在提交前查看修改。
  5. 提交修改。
  6. 在修改完成后,如果发现错误,可以撤回提交并再次修改并提交。

在这里插入图片描述

二、Git 的安装及简单使用

2.1 安装Git

yum install git -y

输入git --version,可查看 git 的版本
在这里插入图片描述
在这里插入图片描述

2.2 创建仓库

  • 仓库,这个仓库里面的所有文件都可以被Git管理起来,每个文件的修改、删除,Git都能跟踪,以便任何时刻都可以追踪历史,或者在将来某个时刻可以“还原”。

1、创建一个目录 mkdir repository
2、通过git init命令把这个目录变成Git可以管理的仓库。
在这里插入图片描述
此时,repository版本库里会多一个 隐藏目录.git,此目录是 Git来跟踪管理版本库的
在这里插入图片描述
在这里插入图片描述

2.3 添加文件到版本库

  • 所有的版本控制系统,只能跟踪文本文件的改动,比如TXT文件,网页,所有的程序代码等等,Git也不例外。版本控制系统可以告诉你每次的改动,比如在第5行加了一个单词“Linux”,在第8行删了一个单词“Windows”。而图片、视频这些二进制文件,虽然也能由版本控制系统管理,但没法跟踪文件的变化,只能把二进制文件每次改动串起来,也就是只知道图片从100KB改成了120KB,但到底改了啥,版本控制系统不知道,也没法知道。

1、用命令git add告诉Git,把文件添加到仓库

  • 命令git add ,可反复多次使用,添加多个文件

在这里插入图片描述
2、用命令git commit告诉Git,把文件提交到仓库

git commit -m "test.txt submit"
  • 命令git commit,可以一次提交很多文件,-m后面输入的是本次提交的说明,可以输入任意内容,最好是有意义的,这样就能从历史记录里方便地找到改动记录。

在这里插入图片描述
3、修改test.txt文件内容,运行git status,告诉我们文件被修改过。

  • git status命令:查看仓库当前的状态
    在这里插入图片描述
  • git commit -a : 跳过使用暂存区域,自动把所有已经跟踪过的文件暂存起来一并提交,从而跳过 git add 步骤

4、查看文件test.txt,如何被修改,运行git diff

  • 命令git diff:查看difference,查看文件具体的改变

在这里插入图片描述
5、重新添加修改后的文件,且提交。

在这里插入图片描述
在Git中,每当你文件修改完成时,就可以“保存一个快照”,这个快照在Git中被称为commit。一旦你把文件改乱了,或者误删了文件,还可以从最近的一个commit恢复,然后继续工作。

6、我们可以用git log命令,查看文件更改的历史记录:

  • git log命令显示从最近到最远的提交日志,我们可以看到3次提交,最近的一次是chenged test.txt,second(我自己又提交了一次),最远一次test.txt submit

在这里插入图片描述

2.4 版本回退

现在,我们要把当前版本chenged test.txt,second回退到上一个版本chenged test.txt

1、使用git reset --hard命令,回退:

回退到上一版:	git reset --hard HEAD^
回退到倒数第二版: git rest --hard HEAD^^
回退到commit id为xxxxxxx的版本 : git rest --hard xxxxxxx
  • 在Git中,用HEAD表示当前版本,上一个版本就是HEAD^,上上一个版本就是HEAD^^,当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100。

在这里插入图片描述

  • git reset 和 git reset --hard区别:
    git reset(git reset –-soft)回退到某个版本,只回退了commit的信息,不会恢复到index file一级。如果还要提交,直接commit即可。
    git reset -–hard彻底回退到某个版本,本地的源码也会变为上一个版本的内容,撤销的commit中所包含的更改被冲掉

2、我们现在又想回到之前的版本chenged test.txt,second,只要上面的命令行窗口还没有被关掉,找到之前版本chenged test.txt,secondcommit id即可回到之前的版本。

git reset --hard <commit id>

在这里插入图片描述
当然,还可以使用git reflog查看命令历史,回到未来的某个版本。

在这里插入图片描述

2.5 工作区和暂存区

在这里插入图片描述

  • 工作区:在电脑里能看到的目录,我的repository文件夹就是一个工作区
  • 版本库:工作区的一个隐藏目录.git,是Git的版本库。其中,index就是暂存区,还有Git为我们自动创建的第一个分支master,以及指向master的一个指针叫 HEAD

在这里插入图片描述

前面,我们把文件往Git版本库里添加的时候,是分两步执行的:

  • 第一步: git add把文件添加进去,本质就是 把文件修改添加到暂存区
  • 第二步: git commit提交更改,本质就是 把暂存区的所有内容提交到当前分支

总的来说,需要提交的文件修改通通放到暂存区,然后,一次性提交暂存区的所有修改。
1、我们先对 test.txt进行修改,在新编辑一个test2在工作区。查看状态git statustest2从来没有被添加过,所以它的状态是Untracked

在这里插入图片描述

2、使用两次命令git add,将两个文件都添加后,用git status再查看一下
在这里插入图片描述
此时,暂存区的状态
在这里插入图片描述
3、执行git commit 就可以一次性把暂存区的所有修改提交到分支

一旦提交后,如果你又没有对工作区做任何修改,那么工作区就是“干净”的
在这里插入图片描述
此时,暂存区就没有任何内容了
在这里插入图片描述
每次修改,如果不用 git add 到暂存区,那就不会加入到commit中,除非使用 git commit -a -m "xxx"

2.6 撤销修改和删除文件

1、 仅丢弃工作区的修改

git checkout -- file

2、 要丢弃已添加到暂存区的文件,但未再更改过

git reset HEAD <file>
	##把暂存区的修改撤销掉,重新放回工作区,用HEAD时,表示最新的版本
git checkout -- file
	##丢弃工作区的修改

3、 要丢弃已添加到暂存区,又作了修改的文件

git checkout -- file
	##撤销修改就回到添加到暂存区后的状态

4、删除文件
命令git rm用于删除一个文件。

  • 如果一个文件已经提交到版本库,那么永远不用担心误删,但是只能恢复文件到最新版本,你会丢失最近一次提交后你修改的内容。
发布了102 篇原创文章 · 获赞 21 · 访问量 5316

猜你喜欢

转载自blog.csdn.net/ranrancc_/article/details/103484543