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 branch。tip 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 HEAD,HEAD就是你的仓库中的heads中的一个的引用。
head ref
head的同义
hook
在正常执行git命令时,hook允许开发者增加功能或者进行检验。Hook是可选的,hook存储在$GIT_DIR/hooks下,只需要将.sample后缀去除即可使其生效。
index
带有状态信息文件的集合。Index是工作树的一个存储版本。
index entry
存储在index中的条目
master
缺省开发分支
merge
作为动词:将其它分支内容引入到当前分支。Fetch和merge的联合操作称为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
packaxe是diff的一个选项,它帮助选择增加或删除哪些变更集,使用—pickaxe-all选项,可以查看引入或删除的整个变更集。
plumbing
core git的可爱的名字
porcelain
依赖于core git的程序或程序套件,对core git的更高级访问;pocelain比plumbing暴露更多的源代码控制管理接口。
pull
fetch + merge
push
push分支意味着从远程仓库获取分支head,确认它是否本地分支的直接祖先,如果是,则把本地分支head能够获取的而远程仓库没有的对象放入远程仓库并且更新远程head。如果远程head不是当前分支的祖先,则push失败。
reachable
一个提交的所有祖先称为这个提交可以”reachable”的。
rebase
从一个branch重放变更到另一个分支,重置另一个分支的head
ref
意指一个特定对象。存放在$GIT_DIR/refs/下
reflog
显示ref的本地历史。换句话说,它能告诉你此仓库中第三个最新的版本的是什么,此仓库中昨天9:14的当前状态是什么。详情见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
对tag或commit对象的引用。与head的实质是一样的,只是存储在$GIT_DIR/refs/tags下。
tag object
包含指向另一对象引用的对象,它能包含一些信息,也能包含PGP签名。
topic branch
概念开发线,我们定义一个topic branch来开发定义的概念或一些小的变更。
tree
不是一个工作树,就是一个树对象
tree object
包含blob或tree对象的对象
tree-ish
指向提交、tree、tag对象、提交、树对象的引用
unmerged index
包含未合并index条目的index
unreachable object
不能由branch\tag\其它引用引用的对象
upstream branch
合并分支时的缺省分支。上游分支。
working tree
实际检出文件的树。