Git 基本概念及使用

Posted -Robot-

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Git 基本概念及使用相关的知识,希望对你有一定的参考价值。

Git分布式特性

集中化的版本控制系统:他们都有一个单一的集中管理的服务器,保存所有文件的修订版本,而协同工作的人们都通过客户端
连到这台服务器,取出最新的文件或者提交更新 。如下图所示

 

 

 

分布式版本管理控制系统:分布式版本管理控制系统的客户端并不只提取最新版本的文件快照,而是把代码仓库完整地镜像
下来。这么一来,任何一处协同工作用的服务器发生故障,事后都可以用任何一个镜像出来的本地仓库恢复。因
为每一次的克隆操作,实际上都是一次对代码仓库的完整备份。

 

 

Git版本管理和控制系统的存储方式:

Git 和其它版本控制系统(包括 Subversion 和近似工具)的主要差别在于 Git 对待数据的方法。概念上来区分,
其它大部分系统以文件变更列表的方式存储信息。这类系统(CVS、Subversion、Perforce、Bazaar 等等)将
它们保存的信息看作是一组基本文件和每个文件随时间逐步累积的差异。

Git 不按照以上方式对待或保存数据。反之,Git 更像是把数据看作是对小型文件系统的一组快照。每次你提交
更新,或在 Git 中保存项目状态时,它主要对当时的全部文件制作一个快照并保存这个快照的索引。为了高效,
如果文件没有修改,Git 不再重新存储该文件,而是只保留一个链接指向之前存储的文件。Git 对待数据更像是
一个 快照流

这是 Git 与几乎所有其它版本控制系统的重要区别。因此 Git 重新考虑了以前每一代版本控制系统延续下来的诸
多方面。Git 更像是一个小型的文件系统,提供了许多以此为基础构建的超强工具,而不只是一个简单的 VCS。
稍后我们在Git 分支讨论 Git 分支管理时,将探究这种方式对待数据所能获得的益处。

 

 Git的三种状态:

Git 有三种状态,你的文件可能处
于其中之一:已提交(committed)、已修改(modified)和已暂存(staged)。已提交表示数据已经安全的
保存在本地数据库中。已修改表示修改了文件,但还没保存到数据库中。已暂存表示对一个已修改文件的当前版
本做了标记,使之包含在下次提交的快照中。

由此引入 Git 项目的三个工作区域的概念:Git 仓库、工作目录以及暂存区域。

 

Git 仓库目录是 Git 用来保存项目的元数据和对象数据库的地方。这是 Git 中最重要的部分,从其它计算机克隆
仓库时,拷贝的就是这里的数据。
工作目录是对项目的某个版本独立提取出来的内容。这些从 Git 仓库的压缩数据库中提取出来的文件,放在磁盘
上供你使用或修改。
暂存区域是一个文件,保存了下次将提交的文件列表信息,一般在 Git 仓库目录中。有时候也被称作`‘索
引’\',不过一般说法还是叫暂存区域。
基本的 Git 工作流程如下:
1. 在工作目录中修改文件。
2. 暂存文件,将文件的快照放入暂存区域。
3. 提交更新,找到暂存区域的文件,将快照永久性存储到 Git 仓库目录。
如果 Git 目录中保存着的特定版本文件,就属于已提交状态。如果作了修改并已放入暂存区域,就属于已暂存状
态。如果自上次取出后,作了修改但还没有放到暂存区域,就是已修改状态。

 

 

 

Git 自带一个 git config 的工具来帮助设置控制 Git 外观和行为的配置变量。这些变量存储在三个不同的位
置:
1. /etc/gitconfig 文件: 包含系统上每一个用户及他们仓库的通用配置。 如果使用带有 --system 选项的
git config 时,它会从此文件读写配置变量。
2. ~/.gitconfig ~/.config/git/config 文件:只针对当前用户。 可以传递 --global 选项让 Git
读写此文件。
3. 当前使用仓库的 Git 目录中的 config 文件(就是 .git/config):针对该仓库。
每一个级别覆盖上一级别的配置,所以 .git/config 的配置变量会覆盖 /etc/gitconfig 中的配置变量。

 

Git基础:

获取Git项目仓库的办法:

1、在现有项目或者目录下导入所有文件到Git中;

2、从一个服务器克隆一个现有的Git仓库;

 

 

1、在现有目录中初始化仓库 :

打算使用Git来对现有的项目进行管理,你只需要进入该项目目录并输入:

git init

该命令将创建一个名为.git的子目录,这个子目录含有你初始化的Git仓库中的所有的必须文件,这些文件是Git仓库的骨干。但是,在这个时候,我们仅仅是做了一个初始化的操作,你项目里面的文件还没被跟踪。如果你是在一个已经存在文件的文件夹中初始化Git仓库来进行版本控制的话,你应该开始跟踪这些文件并提交。你可以通过git add命令来实现对指定文件的跟中,然后执行git commit提交:

 

克隆仓库的格式是 git clone【url】

git clone https://github.com/libgit2/libgit2.

 

 

记录每次更新到仓库

 

 

 常用命令:

1、检查当前文件状态: 要查看哪些文件处于什么状态,可以用 git status 命令;如果git status命令的输出对你来说过于模糊,你想知道具体修改了什么,可以使用

git diff 命令,他可以帮你回答如下两个问题:当前做得那些更新没有暂存,有哪些暂存起来准备好了下次提交。git diff本身只显示尚未暂存的改动,而不是上次提交以来所做的所有改动。

 

2、跟踪新文件使用命令 git add 开始跟踪一个文件 ,将git add将这个命令理解为“添加内容到下一次提交中”而不是“将一个文件添加到项目中”更加合适;

3、忽略文件:gitignore

 

4、提交更新

git commit

 

5、提过使用暂存区域

尽管使用暂存区域的方式可以精心准备要提交的细节,但有时候这么做略显繁琐。Git 提供了一个跳过使用暂存
区域的方式,只要在提交的时候,给 git commit 加上 -a 选项,Git 就会自动把所有已经跟踪过的文件暂存起
来一并提交,从而跳过 git add 步骤 。

 

6、移除文件

要从 Git 中移除某个文件,就必须要从已跟踪文件清单中移除(确切地说,是从暂存区域移除),然后提交。可
以用 git rm 命令完成此项工作,并连带从工作目录中删除指定的文件,这样以后就不会出现在未跟踪文件清单
中了。

7、移动文件

不像其它的 VCS 系统,Git 并不显式跟踪文件移动操作。如果在 Git 中重命名了某个文件,仓库中存储的元数据
并不会体现出这是一次改名操作。不过 Git 非常聪明,它会推断出究竟发生了什么,至于具体是如何做到的,我
们稍后再谈。
既然如此,当你看到 Git 的 mv 命令时一定会困惑不已。要在 Git 中对文件改名,可以这么做:
 

 

 8、查看提交历史

 在提交了若干更新,又或者克隆了某个项目之后,你也许想回顾下提交历史.完成这个任务最简单而又有效的工
具是 git log 命令。

git log 有许多选项可以帮助你搜寻你所要找的提交,接下来我们介绍些最常用的。
一个常用的选项是 -p,用来显示每次提交的内容差异。你也可以加上 -2 来仅显示最近两次提交,git log详细的操作见手册。

 

9、撤销操作

 在任何一个阶段,你都有可能想要撤消某些操作。这里,我们将会学习几个撤消你所做修改的基本工具。注意,
有些撤消操作是不可逆的。这是在使用 Git 的过程中,会因为操作失误而导致之前的工作丢失的少有的几个地方
之一。
有时候我们提交完了才发现漏掉了几个文件没有添加,或者提交信息写错了。此时,可以运行带有 --amend
项的提交命令尝试重新提交:

 

 10、配置文本编辑器

既然用户信息已经设置完毕,你可以配置默认文本编辑器了,当 Git 需要你输入信息时会调用它。如果未配
置,Git 会使用操作系统默认的文本编辑器,通常是 Vim。如果你想使用不同的文本编辑器,例如 Emacs,可以
这样做:

 

11、获取帮助

若你使用 Git 时需要获取帮助,有三种方法可以找到 Git 命令的使用手册:

 

以上是关于Git 基本概念及使用的主要内容,如果未能解决你的问题,请参考以下文章

Docker基本概念及操作指令

C++11多线程第一篇:并发基本概念及实现,进程线程基本概念

C++11多线程第一篇:并发基本概念及实现,进程线程基本概念

require.js的基本概念及使用流程

GAN(1) GAN介绍: 基本概念及逻辑

Docker 概念及基本用法