我可以直接在Git中编辑暂存区吗?

q9yhzks0  于 2023-01-07  发布在  Git
关注(0)|答案(2)|浏览(112)

暂存文件是否存储在Git中,以便我可以手动编辑它们,而无需使用Git命令?例如,我是否可以在编辑器中打开暂存文件并更改暂存的内容,或者删除整个暂存文件或添加新文件(如果我想在下次提交时删除或添加文件),而无需修改我的工作目录?

30byixjq

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一起提供,做同样的事情,但不如真实的的编辑器出色。

o8x7eapl

o8x7eapl2#

不,或者至少不容易。暂存文件以编辑器无法理解的格式存储-请参阅.git/index.git/objects。将暂存索引视为Git内部的格式,并仅使用Git客户端(命令行客户端或某个库)操作它。

相关问题