20 分钟教你搞懂 Git!

  • 时间:
  • 浏览:1
  • 来源:uu快3棋牌_uu快3讨论群_规律

$ echo "second commit" | git commit-tree 1552fd52bc14497c11313aa91547255c95728f37 -p c9053865e9dff393fd2f7a92a18f9bd7f2caa7fa

在上述代码中,git hash-object命令将test.txt现有的内容压缩成二进制文件,并保存到Git中。该压缩文件叫做Git对象,保趋于稳定.git/objects目录中。

可能你看过看该文件原始的文本内容,这么 应该使用git cat-file。

让当.我 再来看看文件内容。

下列所有“快照”的引用指的有的是提交。

这个 文件的内容可能改变了,而是你需用再次把它保存为Git对象。

否则 把这个 文件加上到Git代码库中,这个 步将创建test.txt现有内容的1个多 副本。

$ echo 785f188674ef3c6ddc5b516507884e1d551f53ca > .git/refs/heads/master

原文发布时间为:2018-12-10

本文作者:机器学习算法与Python学习

本文来自云栖社区合作方式方式伙伴“ 机器学习算法与Python学习”,了解相关信息需用关注“guodongwei1991”微信公众号

上述命令记录了文件名test.txt、二进制对象名(哈希值)以及索引中文件的访问权限。

$ git commit -m "first commit"

$ git cat-file -p c9053865e9dff393fd2f7a92a18f9bd7f2caa7fa

commit c9053865e9dff393fd2f7a92a18f9bd7f2caa7fa

Author: jam

Date: Sun Oct 7 13:12:14 2018 +050

c9053865e9dff393fd2f7a92a18f9bd7f2caa7fa

$ git hash-object -w test.txt

c90c5155ccd6661aed956510f5bd57828eec9ddb

git ls-files命令需用显示索引中当前的内容。

在上述代码中,目录特性保存成了二进制对象,而对象的名字是哈希值。它也保趋于稳定.git/objects目录中。

$ git log

接下来让当.我 创建1个多 新的空文件test.txt。

当.我 需用通过这个 命令根据对象的文件名获取当前内容,并计算成SHA1 哈希(长度为40的字符串)。让当.我 看看下列新生成的Git对象文件。

首先,当.我 需用设置用户名和邮件地址。在你保存快照的后来,Git需用记录是谁执行的提交。

让当.我 创建1个多 项目的目录,否则 进入该目录。

上述代码显示索引中不到1个多 test.txt文件,还显示了该文件的二进制对象名和访问该文件的权限。可能你知道该二进制对象名,就需用查看.git/objects子目录中该文件的内容。

git init只做了一件事情,那而是在项目的根目录下创建.git子目录来保存版本信息。

让当.我 来看看该文件的内容。

$ git show c9053865e9dff393fd2f7a92a18f9bd7f2caa7fa

上述命令大慨针对当前项目中所有趋于稳定了变化的文件执行上述1个多 步骤。

commit c9053865e9dff393fd2f7a92a18f9bd7f2caa7fa

Author: jam

Date: Sun Oct 7 13:12:14 2018 +050

针对每个文件执行上述1个多 步骤非常繁琐。而是Git提供了git add命令来复杂化那先 操作。

785f188674ef3c6ddc5b516507884e1d551f53ca

可能原文件为空,而是上述命令那先 都这么 显示。现在当.我 往test.txt文件中写点东西。

如上述代码所示,.git/objects目录下又多出了1个多 子目录,否则 这个 子目录名是上述哈希值的前1个多 字符。在这个 子目录下有1个多 文件,文件名是上述哈希值中其余的38个字符。

项目的历史记录由不同时间点的项目快照组成。Git需用将项目恢复成任何1个多 快照。在Git中“快照”有1个多 专门的术语,即“提交”(commit)。而是生成快照也需用称之为完成提交。

$ git log

$ echo "hello world again" > test.txt

1552fd52bc14497c11313aa91547255c95728f37

$ git checkout c9053865e9dff393fd2f7a92a18f9bd7f2caa7fa

tree c3b8bb102afeca85037d5b5dd89ceeb0090eae9d

author jam 1538889134 +050

committer jam 1538889134 +050

接下来,保存现有的目录特性。在本文的前面当.我 讨论了保存对象只会保存1个多 文件,不要再会记录文件之间的目录特性。

在这篇文章中,我将用1个多 例子来解释Git的运行过程,帮助你理解Git的工作原理。

commit 785f188674ef3c6ddc5b516507884e1d551f53ca (HEAD -> master)

Author: jam

Date: Sun Oct 7 13:38:00 2018 +050

上述代码显示索引中不到1个多 新文件test.txt,该文件正在守候写入版本的历史记录中。

git status命令需用输出更多可读的结果。

$ git log --stat c9053865e9dff393fd2f7a92a18f9bd7f2caa7fa

索引保存趋于稳定了变化的文件信息。等到修改完成,所有那先 信息前会被写入版本的历史记录中,这大慨生成1个多 当前项目的快照。

上述命令显示了.git子目录中的内容。

尽管每天你前会用到Git,但有的是可能搞不懂它的工作原理。为那先 Git需用管理版本?基本命令git add和git commit到底在干那先 ?

当文件保存成二进制对象后来,你需用告诉Git哪个文件趋于稳定了变化。Git会在1个多 又名“索引”(或阶段)的区域记录所有趋于稳定了变化的文件。否则 等到所有的变更都开始英文后,将索引中的那先 文件同时写入正式的版本历史记录中。

$ git update-index test.txt

$ git write-tree

上述代码输出的文件内容是或多或少二进制字符。你可能会问既然test.txt是空文件,又杂办 会有那先 内容呢?这是可能该二进制对象中还存储了或多或少元数据。

git write-tree命令需用根据当前目录特性生成1个多 Git对象。

test.txt | 1 +

1 file changed, 1 insertion(+)

first commit

可能想管理项目的版本,这么 当.我 应该做的第一件事情而是通过git init初始化。

如上述代码所示,test.txt的哈希值可能随着文件内容的改变而趋于稳定了变化。同时还生成了新文件.git/objects/3b/18e512dba79e4c850dd08aeb37f8e728b8dad。现在我就看过这个 文件的内容了。

$ echo "first commit" | git commit-tree c3b8bb102afeca85037d5b5dd89ceeb0090eae9d