是" git rev-parse --short"知道当前目录?

时间:2017-10-18 20:08:42

标签: git

某些--prefix命令对运行命令的目录很敏感。 (这就是git rev-parse --short HEAD存在的原因)

class Profile(models.Model): following = models.ManyToManyField('Profile', related_name='followed') admin_notes = models.TextField() 是其中一个命令吗?

1 个答案:

答案 0 :(得分:1)

编辑(根据编辑的问题):由于HEAD始终指定当前版本并且不依赖于工作树中的路径,因此--prefix无效。

[原始答案(包括上述内容)。]

我不清楚你打算在这里问什么。

在内部,git rev-parse确实找到了当前的工作树和其他项目。但是,如果没有其他参数运行,它没有任何用处。例如:

$ git rev-parse --short
fatal: Needed a single revision

此特定git rev-parse命令失败。无论是--prefix还是缺乏{。}},它都会这样做。

(如果没有Git存储库,它甚至更早失败:

fatal: Not a git repository (or any parent up to mount point /)
Stopping at filesystem boundary (GIT_DISCOVERY_ACROSS_FILESYSTEM not set).

但这不是很有趣。)

--short选项只会缩短成功时显示的哈希ID。

通过解析修订说明符生成的哈希ID可以依赖于工作树,但并非总是如此。例如:

git rev-parse HEAD

生成当前(或HEAD@)提交哈希。使用--prefix不会影响它。但是:

git rev-parse HEAD:./path

生成相对于存储库中当前位置的给定path参数的树或blob哈希值;在这里,使用--prefix 影响它。

同时,git rev-parse可用于执行除生成提交哈希之外的事情。这里--short--prefix都可以完全无关。例如:

$ git rev-parse --sq-quote --short --prefix x HEAD:./Documentation
 '--short' '--prefix' 'x' 'HEAD:./Documentation'

所以你提供的其他参数和选项真的很重要。