git 词汇表(git glossary)

http://www.kernel.org/pub/software/scm/git/docs/gitglossary.html


 


 

alternate object database

通过alternate机制,一个仓库能从另一个对象数据库继承部分对象数据库,此种机制称为alternate


 

bare repository

bare repository是一个以.git为后缀的目录,它没有检出任何版本控制的文件。所有在正常的.git目录中出现的git管理和控制文件都将出现在这个目录下。通常公共仓库的发布都是做一个bare repository来访问。


 

blob object

没有类型的对象。例如:文件内容


 

branch

一个branch是一个开发线。Branch上的最新提交被称为tip of that branchtip of that branch又被head所引用。单个仓库能跟踪任意个分支,但是你的工作树只与一个分支相关,HEAD指向那个分支。


 

cache

index关键字替代


 

chain

对象列表,各个对象包含它的继承者。例如:一个commit的继承可以是它的父提交中的一个。


 

Changeset

因为git不存储变更,只存储状态,所以对git来说,没有意义。


 

Checkout

以对象数据库中的树对象或者blob对象更新工作树,可以更新全部也可以更新部分。如果整个工作树指向一个新分支,则更新索引和HEAD


 

cherry-picking

scm的行话,cherry pick意味着从变更序列中选出一个变更子集,然后将这个变更子集组成一个新的变更序列。在git中,这个任务由git cherry-pick命令来完成,它从已经存在的commit中抽取变更,然后基于当前分支应用变更序列。


 

clean

工作树是干净的,如果它与当前head版本是一致的。否则为dirty


 

commit

作为名词:git历史中的一个节点。项目的整个历史就是由这些节点组成的。Commit相当于其它版本控制系统的revision或者version

作为动词:存储项目状态的镜像到git历史中,它创建index中的当前状态为一个commit,然后使HEAD前移到新的commit上。


 

commit object

一个包含特定版本信息的对象,可能的对象是parents,committer,author,date,tree object,它对应存储版本的最顶级目录。


 

core git

git的基础数据结构和实用工具,只包含有限的源代码管理工具。


 

DAG

Directed acyclic graph.非周期图表,提交对象组成了一个非周期图表,因为它们有父对象。起始和末尾不是同一对象。


 

dangling object

一个unreachable对象就是即使从其它unreachable对象也不可达的对象;一个dangling对象在本仓库中没有引用或对象来引用它。


 

detached HEAD

正常情况下HEAD存储分支名字,可是,git允许你检出任意commit,即使此commit不是特定分支的tip。这样,HEAD就是detached


 

dircache

查看index


 

dirty

如果工作树包含修改,但是还没有提交到当前分支,则称为dirty


 

ent

一些爱好者将tree-ish叫做ent


 

evil merge

是这样的一个merge,它引入那些没有出现在parent中的变更。


 

fast-forward

fast-forward是一种特殊的merge类型,你有一个版本,而你要merge的源分支正好是此版本的后代。这样的情况下,你不必做一个新的merge commit,而是直接更新到此分支的版本。这个操作在remote-track barnch中使用很频繁。


 

fetch

fetch一个分支意味着从远程仓库获得此分支的head引用,以便找出本地对象数据库缺少哪些对象并且获得它们。


 

file system

linus torvalds设计git成为一个用户空间文件系统。例如:保留文件和目录架构。保证git的效率和速度。


 

git archive

仓库repository的同义词


 

grafts

grafts通过为commits记录假的祖先信息使两个不同开发线组合在一起。你可以通过这种方式使git为提交假装了一些父对象,这与正常提交创建的是有不同的。通过.git/info/grafts文件来配置。


 

hash

git上下文中,与object name同义


 

head

tip of a branch的命名引用。存储在/GIT_DIR/refs/heads/下,除非使用打包引用(查看git pack-refs


 

HEAD

当前分支。当前工作树从HEAD派生。如果没有使用detached HEADHEAD就是你的仓库中的heads中的一个的引用。


 

head ref

head的同义


 

hook

在正常执行git命令时,hook允许开发者增加功能或者进行检验。Hook是可选的,hook存储在$GIT_DIR/hooks下,只需要将.sample后缀去除即可使其生效。


 

index

带有状态信息文件的集合。Index是工作树的一个存储版本。


 

index entry

存储在index中的条目


 

master

缺省开发分支


 

merge

作为动词:将其它分支内容引入到当前分支。Fetchmerge的联合操作称为pull.

作为名词:除非是fast-forward,否则将会产生一个新的提交。此提交称为merge commit


 

object

git中的存储单元。它由SHA1来唯一标识。对象不能改变。


 

object database

存储一系列对象。所有对象存于$GIT_DIR/objects/下。


 

Object identifier

object name同义


 

object name

对象唯一标识符。


 

object type

commit,tree,tag,blob中的一种


 

octopus

merge多于两个的分支。


 

origin

缺省上游仓库。大多数项目有至少一个上游仓库。


 

pack

压缩到一个文件的一系列对象(节省空间和传输快)


 

pack index

pack中的标识序列和其它信息以帮助访问pack内容


 

pathspec

路径模式

pathspec用于命令行,如”git ls-files” “gitls-tree” “git grep“ ”git checkout“。许多其它命令限制操作范围到树或工作树的子集。


 

parent

提交对象的前继对象。


 

pickaxe

packaxediff的一个选项,它帮助选择增加或删除哪些变更集,使用—pickaxe-all选项,可以查看引入或删除的整个变更集。


 

plumbing

core git的可爱的名字


 

porcelain

依赖于core git的程序或程序套件,对core git的更高级访问;pocelainplumbing暴露更多的源代码控制管理接口。


 

pull

fetch + merge


 

push

push分支意味着从远程仓库获取分支head,确认它是否本地分支的直接祖先,如果是,则把本地分支head能够获取的而远程仓库没有的对象放入远程仓库并且更新远程head。如果远程head不是当前分支的祖先,则push失败。


 

reachable

一个提交的所有祖先称为这个提交可以”reachable”的。


 

rebase

从一个branch重放变更到另一个分支,重置另一个分支的head


 

ref

意指一个特定对象。存放在$GIT_DIR/refs/


 

reflog

显示ref的本地历史。换句话说,它能告诉你此仓库中第三个最新的版本的是什么,此仓库中昨天914的当前状态是什么。详情见git-reflog


 

refspec

refspec被用于fetch\push以映射远程ref和本地ref。它们由:组成,前面有一个可选的+。例如:git fetch $URL refs/heads/master:refs/heads/origin意味着从$URL抓取master分支head,然后存取到origin分支。


 

remote-tracking branch

一个用于追踪其它仓库变更的git分支。它不包含直接的修改,也不能向它提交。远程跟踪分支通常用于pull的右边引用。


 

repository

包含对象数据库及refs


 

resolve

修复失败的merge操作后,对其进行的确认操作。


 

revision

文件或目录的一定特定状态。它由commit对象引用。


 

rewind

扔掉部分开发,例如:将head赋值到一个早期版本。


 

SCM

代码控制管理


 

SHA1

object name同义


 

shallow repository

git clone –depth创建shallow仓库,它只包含部分历史,这样可以快速查看最近历史。如果要查看更深历史,可以使用git fetch获得。


 

synref

符号引用:与其使用SHA1id,不如使用refs/some/thing来代替。


 

tag

tagcommit对象的引用。与head的实质是一样的,只是存储在$GIT_DIR/refs/tags下。


 

tag object

包含指向另一对象引用的对象,它能包含一些信息,也能包含PGP签名。


 

topic branch

概念开发线,我们定义一个topic branch来开发定义的概念或一些小的变更。


 

tree

不是一个工作树,就是一个树对象


 

tree object

包含blobtree对象的对象


 

tree-ish

指向提交、treetag对象、提交、树对象的引用


 

unmerged index

包含未合并index条目的index


 

unreachable object

不能由branch\tag\其它引用引用的对象


 

upstream branch

合并分支时的缺省分支。上游分支。


 

working tree

实际检出文件的树。