暂存文件是否存储在Git中,以便我可以手动编辑它们,而无需使用Git命令?例如,我是否可以在编辑器中打开暂存文件并更改暂存的内容,或者删除整个暂存文件或添加新文件(如果我想在下次提交时删除或添加文件),而无需修改我的工作目录?
30byixjq1#
暂存文件是否存储在Git中的某个位置是的,在.git/objects中存储了整个仓库。本地添加的新内容在.git/objects/??中开始时经过轻微压缩,并在内部进行了类型标记,其中??是其ID的前两位数字,该目录中的文件名是ID的其余部分。这样我就可以不用Git命令手动编辑它们了不需要。git仓库是一个内容寻址的数据库,不同的内容有不同的id。你 * 能 * 做的就是所有编辑器插件所做的:使用任何等效的git cat-file -p :path/to/file来解压缩在该路径中暂存的内容,根据您的意愿编辑它,然后使用某个等效的(键盘到编辑框警告)git update-index --cacheinfo 100644,$(git hash-object -w --path path/to/file somewhere.handy),path/to/file将编辑的内容添加到repo并更新索引条目。例如,我是否可以在编辑器中打开暂存文件并更改暂存的内容,或者删除整个暂存文件或添加新文件(如果我想在下次提交时删除或添加文件),而不修改我的工作目录?如上所述,每一个像样的编辑器都有已经完成上述仪式的插件来完成这一点,对于那些没有像样的编辑器插件的人来说,有一个git gui,它与Git一起提供,做同样的事情,但不如真实的的编辑器出色。
.git/objects
.git/objects/??
??
git cat-file -p :path/to/file
git update-index --cacheinfo 100644,$(git hash-object -w --path path/to/file somewhere.handy),path/to/file
git gui
o8x7eapl2#
不,或者至少不容易。暂存文件以编辑器无法理解的格式存储-请参阅.git/index和.git/objects。将暂存索引视为Git内部的格式,并仅使用Git客户端(命令行客户端或某个库)操作它。
.git/index
2条答案
按热度按时间30byixjq1#
暂存文件是否存储在Git中的某个位置
是的,在
.git/objects
中存储了整个仓库。本地添加的新内容在.git/objects/??
中开始时经过轻微压缩,并在内部进行了类型标记,其中??
是其ID的前两位数字,该目录中的文件名是ID的其余部分。这样我就可以不用Git命令手动编辑它们了
不需要。git仓库是一个内容寻址的数据库,不同的内容有不同的id。你 * 能 * 做的就是所有编辑器插件所做的:使用任何等效的
git cat-file -p :path/to/file
来解压缩在该路径中暂存的内容,根据您的意愿编辑它,然后使用某个等效的(键盘到编辑框警告)git update-index --cacheinfo 100644,$(git hash-object -w --path path/to/file somewhere.handy),path/to/file
将编辑的内容添加到repo并更新索引条目。例如,我是否可以在编辑器中打开暂存文件并更改暂存的内容,或者删除整个暂存文件或添加新文件(如果我想在下次提交时删除或添加文件),而不修改我的工作目录?
如上所述,每一个像样的编辑器都有已经完成上述仪式的插件来完成这一点,对于那些没有像样的编辑器插件的人来说,有一个
git gui
,它与Git一起提供,做同样的事情,但不如真实的的编辑器出色。o8x7eapl2#
不,或者至少不容易。暂存文件以编辑器无法理解的格式存储-请参阅
.git/index
和.git/objects
。将暂存索引视为Git内部的格式,并仅使用Git客户端(命令行客户端或某个库)操作它。