Git索引到底包含什么,我可以使用什么命令来查看索引的内容?
谢谢你的回答。我知道索引作为一个暂存区,提交的内容在索引中而不是工作树中。我只是好奇一个索引对象由什么组成。我猜它可能是一个文件名/目录名列表,SHA-1对,一种虚拟树?
在Git术语中,是否有任何可以用来列出索引内容的管道命令?
Git索引到底包含什么,我可以使用什么命令来查看索引的内容?
谢谢你的回答。我知道索引作为一个暂存区,提交的内容在索引中而不是工作树中。我只是好奇一个索引对象由什么组成。我猜它可能是一个文件名/目录名列表,SHA-1对,一种虚拟树?
在Git术语中,是否有任何可以用来列出索引内容的管道命令?
当前回答
Git索引是工作目录和存储库之间的临时区域。您可以使用索引构建一组希望一起提交的更改。创建提交时,提交的是当前在这个索引中的内容,而不是工作目录中的内容。
要查看索引内的内容,发出命令:
git status
当您运行git status时,您可以看到哪些文件是暂存的(当前在您的索引中),哪些文件已被修改但尚未暂存,以及哪些文件完全未被跟踪。
你可以看看这个。谷歌搜索会抛出许多链接,这些链接应该是相当自给自足的。
其他回答
这是你真正需要的,使用这个命令。
$ binwalk指数
DECIMAL HEXADECIMAL DESCRIPTION
--------------------------------------------------------------------------------
1717 0x6B5 Unix path: /company/user/user/delete.php
1813 0x715 Unix path: /company/user/user/get.php
1909 0x775 Unix path: /company/user/user/post.php
2005 0x7D5 Unix path: /company/user/user/put.php
3373 0xD2D Unix path: /urban-airship/channel/channel/post.php
3789 0xECD Unix path: /urban-airship/named-user/named-user/post.php
3901 0xF3D Unix path: /user/categories/categories/delete.php
4005 0xFA5 Unix path: /user/categories/categories/get.php
4109 0x100D Unix path: /user/categories/categories/put.php
4309 0x10D5 Unix path: /user/favorites/favorites/delete.php
Git索引是一个二进制文件(通常保存在.git/index中),包含一个排序的路径名列表,每个路径名都有权限和一个blob对象的SHA1;
Git ls-files可以显示索引的内容。请注意,在Git中索引、阶段和缓存是同一件事:它们可以互换使用。
Git索引,或Git缓存,有3个重要的属性:
索引包含生成单个(唯一确定的)树对象所需的所有信息。 索引可以在它定义的树对象和工作树之间进行快速比较。 它可以有效地表示关于不同树对象之间合并冲突的信息,允许每个路径名与所涉及的树的足够信息相关联,以便在它们之间创建三向合并。
来源:
https://mincong.io/2018/04/28/git-index/ https://medium.com/hackernoon/understanding-git-index-4821a0765cf
在回应@ciro-santilli-%e9%83%9d%e6%b5%b7% 4%b8%9c%e5%86% a07 %8a%b6% 97% 855 %85%ad%e5%9b%9b%e4%ba%8b%e4%bb%b6% b3% 95b %e5% e5%8a%9f的指数,am分享输出为其中一个TODO。
如果你添加,那么阶段0将被添加到该路径的索引中,git将知道冲突已被标记为已解决。托朵:检查这个。”
更具体地说,是不同的合并阶段。
0:普通文件,不存在合并冲突 1:基础 2:我们的 3:他们的
关于各个阶段的详细数字表示,在这种情况下一个文件有冲突。
$ git ls-files -s
100644 f72d68f0d10f6efdb8adc8553a1df9c0444a0bec 0 vars/buildComponent.groovy
$ git stash list
stash@{0}: WIP on master: c40172e turn off notifications, temporarily
$ git stash apply
Auto-merging vars/commonUtils.groovy
Auto-merging vars/buildComponent.groovy
CONFLICT (content): Merge conflict in vars/buildComponent.groovy
$ git ls-files -s
100644 bc48727339d36f5d54e14081f8357a0168f4c665 1 vars/buildComponent.groovy
100644 f72d68f0d10f6efdb8adc8553a1df9c0444a0bec 2 vars/buildComponent.groovy
100644 24dd5be1783633bbb049b35fc01e8e88facb20e2 3 vars/buildComponent.groovy
Git索引是工作目录和存储库之间的临时区域。您可以使用索引构建一组希望一起提交的更改。创建提交时,提交的是当前在这个索引中的内容,而不是工作目录中的内容。
要查看索引内的内容,发出命令:
git status
当您运行git status时,您可以看到哪些文件是暂存的(当前在您的索引中),哪些文件已被修改但尚未暂存,以及哪些文件完全未被跟踪。
你可以看看这个。谷歌搜索会抛出许多链接,这些链接应该是相当自给自足的。
我只是想让那个混蛋上擂台。
索引是git中最重要的数据结构之一。 它通过记录路径列表及其对象名称来表示一个虚拟工作树状态,并作为一个staging区域来写出要提交的下一个树对象。 这个状态是“虚拟的”,因为它不需要匹配工作树中的文件,通常也不匹配。
如果我签出一个特殊的提交,git ls-tree会准确地告诉我应该呈现哪些工作文件/对象吗?在ls-tree中,我们说的是哪种树?
例子
git ls-tree -r -l HEAD
git ls-tree -r -l commit-hash
顺便说一句:ls-tree也适用于不签出(-n)克隆的存储库,其中ls-files不返回任何内容。
https://stackoverflow.com/a/56242906/2623045
https://stackoverflow.com/a/67567058/2623045