如何将分支合并到master中而不进行更改?

时间:2017-12-06 08:53:29

标签: git git-branch git-extensions

我想将集成分支合并到master中,但我不想改变任何东西只是为了看起来不错。

集成分支是灰色的。这个分支包含很多变化,我想制作一个技巧。要重置它,何时从master拆分,因为我可以看到最后的更改并将它们与master一次提交。因此master将包含来自集成分支的最新版本的文件,但集成将保持从master分离。

我希望将集成合并到主服务器中,只能将可视化(无需更改)合并到历史记录中,因为我已经对该单个提交进行了更改。

enter image description here

最后一个问题是:如何在master中合并集成而不在master上进行更改,只会影响历史记录(可视化)?

我想这样做,因为:

  • 我从主项目结构拆分集成后被修改,现在我有很多冲突。手动合并更容易。之后我只想在master上“合并”集成而不进行更改(因为已经存在)。

2 个答案:

答案 0 :(得分:0)

为实现这一目标,您需要采取的步骤是:

  • 结帐集成分支
  • 使用master(git pull --rebase master)
  • 进行rebase
  • 推送集成分支
  • 结帐大师
  • 合并整合分支
  • 推送主分支。

但只有在集成不是公共分支时,这才有效。如果是,那么你将重写其历史并不是一件好事。如果它是公开的,那么你唯一能做的就是将它与master合并,但你不会有线性历史。

答案 1 :(得分:0)

我同意在几乎所有情况下你都不应该做OP所要求的事情,但我确实认为有时它确实有意义。我没有理由为你避免关于版本控制纯度的争论。

有很多方法可以做到这一点,但这里有一个。注意,这个命令可以让你真正搞乱你的生活(git历史),所以要小心。

git reset "$(git commit-tree -p "$BRANCH_NO_CONTENT_CHANGE" -p "$BRANCH_PRETENDING_TO_MERGE_FROM" -m "Administrative (no-change) merge of $BRANCH_PRETENDING_TO_MERGE_FROM" "$(git log -n 1 --pretty=format:%T "$BRANCH_NO_CONTENT_CHANGE")")"

在OP的上下文中,BRANCH_NO_CONTENT_CHANGE为主,BRANCH_PRETENDING_TO_MERGE_FROM为整合。

我也在"反向"我有一个神奇的分支,其中魔术事件发生,我想使魔术分支的内容与捐助者分支相同(更改出现在另一个名称的最后一个变量的最后一个实例,更改合并提交消息s /无变化/ overwrite /,并忽略名称的语义)。除了保存历史之外,有点像推力。

我强烈建议仔细检查哪些文件在哪里有什么名称和内容,然后测试之前推动这些变化并将你的罪恶永久化为。