首页 > 解决方案 > 如何使下一个 git 提交准确地代表另一个提交的项目状态而不合并?

问题描述

我有两个 git 分支:Alpha 和 Beta,我需要在分支 Alpha 上创建下一个提交,因此它的项目状态将与分支 Beta 上的完全相同。没有合并。

我知道每个 git 提交 - 在逻辑层面上 - 都是一个完整且不可变的项目状态 + 一些元数据。所以我只需要分支 Alpha 就可以像 Beta 一样拥有相同的文件状态。

这将是另一个提交(具有不同的哈希),并且一个分支提示不会引用另一个。

标签: git

解决方案


c=$(git commit-tree Beta^{tree} -p Alpha -m 'foo')
test $c && git update-ref refs/heads/Alpha $c

git commit-tree创建一个新的提交,其树与 Beta 的提示相同,其父级是 Alpha 的提示。

git update-ref使 Alpha 指向新的提交。


推荐阅读