当 git 工作树在合并/rebase/cherry-pick 期间处于冲突状态时,可以通过多种方式获取单个文件的 ours/theirs/base 版本,例如
git checkout --ours/--theirs path/file
或 git show :n:path/file
,其中 n 为 1、2 或 3,参见例如Git:在合并期间获取我们/他们的文件内容
但是,我想获得 ours 和 theirs 提交哈希值 (SHA)。对于我们的来说,这很简单:
git rev-parse HEAD
。但对于他们的,我必须尝试git rev-parse
换MERGE_HEAD, REBASE_HEAD, CHERRY_PICK_HEAD, ...
(...
可能更像BISECT_HEAD
?)。有没有什么简单的方法可以简单可靠地获取所有场景的他们的提交哈希?
是否有任何简单的方法可以简单可靠地获取所有场景的提交哈希?
不要求有有提交哈希值。 Git 已经从多个合并基础构建了一个基础版本来解析具有它们的合并,在某些工作流程中已经很常见有专门构建的
:1:$path
。
另外:任何在 Git 上还没有便利命令的人都可以使用
git update-index --index-info
或 --cacheinfo
或 --info-only
任意加载索引(与现有便利方式几乎相同)。
您可以
ls `git rev-parse --git-dir`/*_HEAD
并忽略 FETCH_HEAD 来获取遵循现有命名约定的所有命令 _HEAD
,并遍历其内容以查找匹配项。