首页 > 解决方案 > 如何在 git 中获取工作副本的树形哈希?

问题描述

使用 git,如何获取 git 目录当前状态的树形哈希?也就是说,如果我要运行,提交的树哈希(不是提交哈希)将是git add -A什么git commit

标签: git

解决方案


Greg Bacon 的方法简单一些:

  • 通过复制当前索引创建临时索引
  • 用于git add -A更新临时索引中的所有内容
  • 用于git commit-tree将临时索引变成实际的树

一个小的 shell 脚本(未经测试)就足够了:

#! /bin/sh -e
export GIT_INDEX_FILE=$(mktemp)
trap "rm -f $GIT_INDEX_FILE" 0 1 2 3 15
cp $(git rev-parse --git-dir)/index $GIT_INDEX_FILE
git add -A && git write-tree

复制当前索引的原因是.gitignore,如果我们没有从真实指数。

另请参阅您自己的问题如何在 git 中获取索引的树哈希?


推荐阅读