某些--prefix
命令对运行命令的目录很敏感。 (这就是git rev-parse --short HEAD
存在的原因)
class Profile(models.Model):
following = models.ManyToManyField('Profile', related_name='followed')
admin_notes = models.TextField()
是其中一个命令吗?
答案 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'
所以你提供的其他参数和选项真的很重要。