git 术语

  • DVCS(分布式版本控制系统)术语

    在开始之前,我们介绍一下分布式版本控制系统的一些术语,以便接下来的教程中更好的去说明各种概念。
  • 本地存储库

    每个VCS工具都提供一个私人工作场所作为工作副本。开发人员在其私人工作场所进行更改,并且在提交后,这些更改将成为存储库的一部分。Git向他们提供了整个存储库的私有副本,这使它更进一步。用户可以使用此存储库执行许多操作,例如添加文件,删除文件,重命名文件,移动文件,提交更改等等。
  • 工作目录和暂存区或索引

    工作目录是检出文件的位置。在其他CVCS中,开发人员通常进行修改并将其更改直接提交到存储库。但是Git使用不同的策略。Git不会跟踪每个修改过的文件。每当您提交操作时,Git都会在暂存区域中查找文件。仅考虑暂存区域中存在的那些文件,而不考虑所有修改后的文件。
    让我们看看Git的基本工作流程。
    • 步骤1-您从工作目录中修改文件。
    • 步骤2-您将这些文件添加到临时区域。
    • 步骤3-您执行提交操作,将文件从暂存区移出。推送操作后,它将更改永久存储到Git存储库。
    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/*