Git

如何用简单的语言解释 Git 的基础命令?

6 年前

Q: branch,index,tree,commit,clone,fork,master,origin,head,checkout,checkin等等这些命令是什么意思?针对远程和本地使用 push 和 pull命令加上这些项让 Git 更加难以理解。

在我第一次邂逅 GitHub 之前从没有用过版本控制系统,因而 Git 终端成为了我的恶梦。网上“简单的”教程试图使用终端来教会大家使用 Git。并且这些形象化的教程,对这些命令的意义不作解释直接使用。

Blob

你可能没怎么见过‘blob’这个单词,但它确是

你可能没怎么见过‘blob’这个单词,但它确是 git 中最基本的数据存储结构。每次文件改变,Git 直接存储文件内容,这在git术语里被称作 Blob。

4254a17be3(哈希)

你看到的这些数字是内容的 SHA1 哈希,这些哈希值在git中作为每个对象的唯一标识,这些对象可能是commit,tree,或者 blob。哈希由 40 个字符构成,但仅仅需要前几个字符(在 Github 中是 10 个)就足够成为唯一的标识。

Tree(即文件夹或目录)

在Git术语中树就像文件夹或者目录。通常在你的git库的顶部有一个树,用来记录哪些文件(又名 blobs )和文件夹(又名 trees )的位置。 在Git术语中树就像文件夹或者目录。通常在你的git库的顶部有一个树,用来记录哪些文件(又名 blobs )和文件夹(又名 trees )的位置。

每个树都有一个哈希和内容信息

了解更多 Git Object: tree | http://GitGuys.com

Commit (即快照)

一个更加详细的 commit,tree 和 blob 结构。

可以把 Commits 想象成一个快照:它们记录某个时间点相对应树的样子。每次提交会有一个哈希,提交者信息,时间以及注释。

了解更多 Git Object: Git Commit - GitGuys

Check in = 做一次提交

提交的另一种叫法。

Commit History(提交历史)

如果你做了一些改变并且提交,这次提交保存了一个指向上一次提交的指针。所以提交“流”是单向的。提交“流”可以被分割为分支。

Branch(即另存为)

一个分支是一系列的提交,这个分支可以分成更多的分支。默认分支名是 master,确切的说仅仅是一个可移动的指针。起初,会有一个 master 分支指向了你的最后一次提交。当你每一次提交,指针会自动的移动去指向最后一次提交。

和真正的分支一样,它也可以被进一步的拆分。你可以在每一个分支上独立的工作。比如,同一时刻使用 Windows XP 和 Windows 7 在不同的版本下相互独立的进行工作。可以把一个基本的 Linux 拥有各种不同的风格想象成不同分支。

你可以使用‘git show-branch’命令形象化地看到和下图类似的提交和分支 在这张图里绿色,蓝色,黄色和紫色的线表示了使用软件可视化后的不同分支。

更多详细Creating And Playing With Branches | Git Branch | GitGuys

或者What a Branch Is

Gi t中的 HEAD 是指向当前分支引用的指针,相应地也就是一个指向你的最后一次提交的指针。通常可以简单的认为 HEAD 就是你的最后一次提交的快照。

Tag(书签)

分支可能变得复杂,tag 在这里可以拯救你。Tag 就像一个书签。创建后可以指向任何分支的任意地方的一次特定的提交。不像分支,比如 master 分支指向了最后一次提交,而 tag 通常可以指向特定的一次提交。

一个 tag 代表了特定分支在某一个时刻的特定版本。

更多详细Git Object: Tag | Git Tag | GitGuys.com [资源: Git objects: the tag]

Index( 暂存区)

这里的 Index 就是你打算的下一次提交。从根本上来说它就是一个装卸码头你可以决定哪些改动被运走。由于工作目录和 Git 已经保存的内容在本质上是分离的,这允许开发者创建他们想要的提交。既然在 Git 保存数据之前有了这一个暂存区,你获得了更多的灵活性和控制权。

更多详细What is the deal with the Git Index? What is the Git Index? - GitGuys

Checkout(检出)

检出一个提交使得整个工作目录都匹配那个提交。这可以被用于查看你项目的一个旧的状态而不必用任何方式替换你当前的状态。检出一个文件让你看到那个指定文件的一个旧版本,使得你的工作目录处于没有被碰过的状态。

大多数的图片和文本摘取自[git ready " learn git one commit at a time] 和 [Pro Git - Pro Git Book] ,并且被我公开的编辑和投递过。

一些容易理解的有用链接 Aha! Moments When Learning Git Git documentation and Git tutorials on GitGuys | GitGuys.com

原文:How do you explain basics of Git in simple words?

0
推荐阅读