git 术语
-
DVCS(分布式版本控制系统)术语
在开始之前,我们介绍一下分布式版本控制系统的一些术语,以便接下来的教程中更好的去说明各种概念。 -
本地存储库
每个VCS工具都提供一个私人工作场所作为工作副本。开发人员在其私人工作场所进行更改,并且在提交后,这些更改将成为存储库的一部分。Git向他们提供了整个存储库的私有副本,这使它更进一步。用户可以使用此存储库执行许多操作,例如添加文件,删除文件,重命名文件,移动文件,提交更改等等。 -
工作目录和暂存区或索引
工作目录是检出文件的位置。在其他CVCS中,开发人员通常进行修改并将其更改直接提交到存储库。但是Git使用不同的策略。Git不会跟踪每个修改过的文件。每当您提交操作时,Git都会在暂存区域中查找文件。仅考虑暂存区域中存在的那些文件,而不考虑所有修改后的文件。让我们看看Git的基本工作流程。- 步骤1-您从工作目录中修改文件。
- 步骤2-您将这些文件添加到临时区域。
- 步骤3-您执行提交操作,将文件从暂存区移出。推送操作后,它将更改永久存储到Git存储库。
假设您修改了两个文件,即“sort.c”和“search.c”,并且您希望为每个操作进行两次不同的提交。您可以在暂存区中添加一个文件并进行提交。第一次提交后,对另一个文件重复相同的过程。# First commit [bash]$ git add sort.c # adds file to the staging area [bash]$ git commit –m “Added sort operation” # Second commit [bash]$ git add search.c # adds file to the staging area [bash]$ git commit –m “Added search operation”
-
Git Blobs
Git Blob(二进制大对象)是用于将每个文件的内容存储在存储库中的对象类型。计算文件的SHA-1哈希并将其存储在blob对象中。这些端点允许您 在GitHub上的Git数据库中读取和写入Blob对象。在Git中,文件不按名称寻址。一切都是针对内容的。 -
Trees (树)
Trees是一个对象,代表一个目录。它包含Blob以及其他子目录。Trees是一个二进制文件,用于存储对Blob和树的引用,这些引用也称为树对象的SHA1哈希。 -
Commits(提交)
提交保存存储库的当前状态。提交也由SHA1哈希命名。您可以将提交对象视为链接列表的节点。每个提交对象都有一个指向父提交对象的指针。从给定的提交中,您可以通过查看父指针以查看该提交的历史记录来进行遍历。如果一个提交有多个父提交,则通过合并两个分支来创建该特定提交。 -
Branches(分支)
分支用于创建另一条开发线。默认情况下,Git有一个master分支,与Subversion中的trunk相同。通常,创建分支以使用新功能。功能完成后,它将与master分支合并回去,我们将删除该分支。HEAD引用每个分支,它指向分支中的最新提交。无论何时进行提交,HEAD都会使用最新的提交进行更新。 -
Tags(标签)
标签在存储库中使用特定版本分配有意义的名称。标签与分支非常相似,但是区别是标签是不可变的。这意味着,tag是一个分支,没有人打算对其进行修改。一旦为特定的提交创建了标记,即使您创建了新的提交,也不会对其进行更新。通常,开发人员为产品发布创建标签。 -
Clone(克隆)
克隆操作将创建存储库的实例。克隆操作不仅签出工作副本,而且还镜像了完整的存储库。用户可以使用此本地存储库执行许多操作。只有在同步存储库实例时才涉及网络。 -
Pull(拉取)
拉取操作会将更改从远程存储库实例复制到本地。拉操作用于两个存储库实例之间的同步。这与Subversion中的更新操作相同。 -
Push(推送)
推送操作将更改从本地存储库实例复制到远程实例。这用于将更改永久存储到Git存储库中。这与Subversion中的commit操作相同。 -
HEAD
HEAD是一个指针,它始终指向分支中的最新提交。无论何时进行提交,HEAD都会使用最新的提交进行更新。分支的头存储在.git/refs/heads/目录中。[CentOS]$ ls -1 .git/refs/heads/ master [CentOS]$ cat .git/refs/heads/master 570837e7d58fa4bccd86cb575d884502188b0c49
-
Revision(修订版)
修订版表示源代码的版本。Git中的修订由提交表示。这些提交由SHA1安全哈希标识。 -
URL
URL代表Git存储库的位置。Git URL存储在配置文件中。[tom@CentOS tom_repo]$ pwd /home/tom/tom_repo [tom@CentOS tom_repo]$ cat .git/config [core] repositoryformatversion = 0 filemode = true bare = false logallrefupdates = true [remote "origin"] url = gituser@git.server.com:project.git fetch = +refs/heads/*:refs/remotes/origin/*