git rev解析头:XXX做什么?
我已经阅读了git rev parse的手册页,但仍然不知道这个命令的作用。 假设我有一个git项目,其结构如下:git rev解析头:XXX做什么?,git,git-rev-parse,Git,Git Rev Parse,我已经阅读了git rev parse的手册页,但仍然不知道这个命令的作用。 假设我有一个git项目,其结构如下: MyProject ├── Folder1 ├── Folder2 ├── .git 如果我跑 git-rev解析头 然后我可以得到一个shau_1,它与我上次提交的相同。很简单 但是如果我跑 git rev解析头:Folder1 然后我得到了另一个SHA_2,它与我所犯过的任何SHA都不同。我的问题是:这个“git rev parse HEAD:Folder1”是什么意思?这个
MyProject
├── Folder1
├── Folder2
├── .git
如果我跑
git-rev解析头
然后我可以得到一个shau_1,它与我上次提交的相同。很简单
但是如果我跑
git rev解析头:Folder1
然后我得到了另一个SHA_2,它与我所犯过的任何SHA都不同。我的问题是:这个“git rev parse HEAD:Folder1”是什么意思?这个SHA_2是什么?
commit:path/to/file
描述了特定提交时的文件(一个“BLOB”)。例如,在git.git存储库中:
$ git rev-parse v2.31.1:git.c
9bc077a025cba4c5b3628b0eabb4d3aac0f35c63
$ git cat-file -t 9bc077a025cba4c5b3628b0eabb4d3aac0f35c63
blob
$ git cat-file -p 9bc077a025cba4c5b3628b0eabb4d3aac0f35c63 | head
#include "builtin.h"
#include "config.h"
#include "exec-cmd.h"
#include "help.h"
#include "run-command.h"
#include "alias.h"
#include "shallow.h"
#define RUN_SETUP (1<<0)
#define RUN_SETUP_GENTLY (1<<1)
当然,path/to/file
可能是一个目录,在这种情况下,输出哈希将指向一个树对象。看一下:
:,例如HEAD:README,master:。/README
后缀:后跟一个路径,在由冒号前面的部分命名的树状对象中的给定路径处命名blob或树。以./或../开头的路径相对于当前工作目录。给定的路径将转换为相对于工作树的根目录。这对于从与工作树具有相同树结构的提交或树中寻址blob或树非常有用
这意味着它不会得到commit/tag/branch/…的散列。。。但是它在commit/tag/branch/中获取目录/文件的哈希值
因此,
git rev parse HEAD:Folder1
意味着在refHEAD
(签出状态)中获取目录Folder1
的树对象的SHA散列。在HEAD:Folder1
之间不能有空格字符,否则您将再次获取提交散列和文件名(Folder1
)
<rev>:<path>, e.g. HEAD:README, master:./README
A suffix : followed by a path names the blob or tree at the given
path in the tree-ish object named by the part before the colon. A
path starting with ./ or ../ is relative to the current working
directory. The given path will be converted to be relative to the
working tree’s root directory. This is most useful to address a blob
or tree from a commit or tree that has the same tree structure as the
working tree.