git - 如何将 git 分支声明为 merge 而不采用其中的更改?

标签 git branch git-merge idioms

假设我们有两个 git 分支,ab (为了简单起见,说他们都是本地人)。分公司a是我的合作伙伴,分支b不是;我不能碰它。

我想“声明”或“标记” b 的 merge 进入a ,而不实际对分支 a 中的代码进行任何更改。我不介意做一个空的提交来表示 merge 。动机是分支上发生了冗余工作b这包含在 a 上所做的工作中因为他们分歧。

假设这是一件“合法”的事情 - 惯用的方法是什么?

最佳答案

我认为它可以很容易地做成这样:

git commit-tree -p a -p b -m "not pulling b changes" a^{tree}

这样,您就要求 git 创建一个新的修订对象,该对象以 ab 作为父级,并具有 a 树作为它的树(因此与 a 没有区别),它具有我在那里提供的注释(随意调整)。该对象将被创建,并且 id 将被打印在标准输出上。您可以检查它以确保它是您想要的:

git diff that-id a
git log that-id
gitk that-id

应该没有区别。如果您喜欢的话,您可以移动它:

git branch -f a that-id

关于git - 如何将 git 分支声明为 merge 而不采用其中的更改?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65498997/

相关文章:

git - 如何列出包含给定提交的分支?

git - 分支策略 - 维护多个版本

git - 当我所做的只是压缩提交时,为什么 git-rebase 会给我 merge 冲突?

git-merge - 不能将 `git mergetool` 与 `git am` 或 `git apply` 或 `patch` 一起使用

git - 仅解决较大团队中的部分 merge 冲突

ios - 我在 Xcode 9 中的 "Source control navigator"下得到两个项目源

git - 有没有办法 git stash 文件的特定行?

Git:从命名远程获取和从 URL 获取有什么区别?

TFS 分支/合并遇到历史 View

git - 如何在本地 pull 远程分支?