Git使用详解
Git简介
Git发展史
同生活中的许多伟大事物一样,Git 诞生于一个极富纷争大举创新的年代。
Linux 内核开源项目有着为数众多的参与者。 绝大多数的 Linux 内核维护工作都花在了提交补丁和保存归档的繁琐事务上(1991-2002年间)。 到 2002 年,整个项目组开始启用一个专有的分布式版本控制系统 BitKeeper 来管理和维护代码。
到了 2005 年,开发 BitKeeper 的商业公司同 Linux 内核开源社区的合作关系结束,他们收回了 Linux 内核社区免费使用 BitKeeper 的权力。 这就迫使 Linux 开源社区(特别是 Linux 的缔造者 Linus Torvalds)基于使用 BitKeeper 时的经验教训,开发出自己的版本系统。 他们对新的系统制订了若干目标:
-
速度
-
简单的设计
-
对非线性开发模式的强力支持(允许成千上万个并行开发的分支)
-
完全分布式
-
有能力高效管理类似 Linux 内核一样的超大规模项目(速度和数据量)
自诞生于 2005 年以来,Git 日臻成熟完善,在高度易用的同时,仍然保留着初期设定的目标。 它的速度飞快,极其适合管理大项目,有着令人难以置信的非线性分支管理系统。
Git的两大特点
-
版本控制:可以解决多人同时开发的代码问题,也可以解决找回历史代码的问题。
-
分布式:Git是一个分布式版本控制系统,同一个Git仓库,可以分布到不同的机器上。
安装与配置
- 安装
sudo apt-get install git // ubuntu
brew install git // Mac
查看是否安装Git只需要在命令行输入git
命令,如果出现git的帮助信息则表示已经安装。
创建第一个版本库
1.首先创建需要使用Git管理代码的目录并定位到该目录下:
mkdir git_test // 创建目录
cd git_test // 进入该目录
2.使用git init
命令初始化仓库
从上面的图中可以看到使用git init
会帮我们创建一个空的仓库,并在当前目录下创建了一个.git的隐藏目录,这就是版本库目录。
版本创建与回退
版本创建
创建第一个版本:
1.在当前目录下创建一个code.txt文件,编辑内容如下:
2.使用以下两条命令可以创建一个版本:
git add code.txt
git commit -m "版本说明信息"
3.使用git log
命令查看版本记录:
PS: commit -m “这里面写的只是一些提示信息,并不是版本号”,使用git log
命令查看版本记录时 commit 后面会显示当前版本的序列号;上图红色方框部分。
创建第二个版本:
1.首先在之前创建的code.txt添加新的内容:
2.使用之前创建版本的两行命令将刚修改的code.txt保存为新的版本:
git add code.txt
git commit -m "版本2"
3.使用git log
命令可以看到两个版本记录:
Git在创建每一个版本时会添加一个记录,而不是复制一份代码;
新的版本依赖于前一个版本;
版本回退
1.若想回到前一个版本,可以使用如下命令:
git reset --hard HEAD^
其中HEAD表示当前最新版本,HEAD表示当前版本的前一个版本,HEAD^表示当前版本的前两个版本,也可以使用HEAD1表示当前版本的前一个版本,HEAD100表示当前版本的前100个版本。
可以看到当前HEAD已经位于版本1
执行命令后使用git log
查看版本记录,发现现在只能看到版本1的记录
2.假如我们现在又想回到版本2,这个时候怎么办?
- 可以使用如些命令回到指定的版本:
git reset --hard 版本号
PS:版本号只需要复制一小段即可回退到指定的版本当中
3.假如说上面的终端已经关闭过,然后重新打开终端;这时发现之前版本2的版本序列化已经看不到了,那么要怎么回到版本2呢?
- 使用
git reflog
命令可以查看之前的操作记录,这里面会显示所有记录的版本号:
工作区与暂存区
工作区(working Directory)
- 电脑中的目录,比如我们现在的git_test目录就是一个工作区。
版本库(Repository)
-
工作区有一个隐藏的.git目录,这个不是工作区,而是git的版本库;而这个版本库在使用init初始化时自动创建。
-
git的版本库里面存了很多东西,其中最重要的就是成为stage(或者叫index)的暂存区,还有git为我们自动创建的第一个分支master,以及指向master的一个指针叫HEAD。
-
因为我们创建git版本库时,git自动为我们创建了唯一一个master分支,所以现在git commit就是往master分支上提交更改。
-
也可以简单理解为,需要提交的文件修改后通通放到暂存区,然后一次性提交暂存区的所有修改。
前面讲了我们把文件往git版本库里添加的时候,是分两步执行的:
-
第一步是用git add把文件添加进去,实际上就是把文件修改添加到暂存区;
-
第二步使用git commit提交更改,实际上就是把暂存区的所有内容提交到当前分支。
查看工作区状态
- 在我们不确定当前工作区修改过哪些文件或是新创建了哪些文件时,可以使用git status命令查看工作区的状态。
- 当我们在工作区创建新的文件或者目录时,git并不会跟踪记录状态;需要使用git add命令添加到暂存区后才会帮我们跟踪记录修改的状态。
- 如果工作区的内容没有发生任何改变的话,此时暂存区是干净的。