gpt4 book ai didi

git - 如何将开发分支 merge 到master中并忽略master中的更改?

转载 作者:行者123 更新时间:2023-12-02 18:12:38 25 4
gpt4 key购买 nike

以下情况:

我在开发分支中做了一些更改(提交 f + g )。不幸的是,master 分支(提交 e + d)发生了一些变化,这些变化现在已经过时,必须被忽略。因此,我正在寻找一种解决方案,将开发分支 merge 到主分支并忽略提交 e 和 d。

enter image description here

到目前为止,我有以下想法:

  1. 通过使用开发中的更改来 merge 并解决 merge 冲突:不可能,因为主版本中也存在不会显示为 merge 冲突的更改
  2. 将开发分支重新设置为 master:不,不是真的,因为提交 d + e 仍然存在
  3. 只能工作但有点丑陋的解决方案:在 master 上创建一个“恢复”分支,恢复提交 d + e,将其 merge 到 master 分支,然后 merge 开发分支。

你有比 3 更好的想法吗?

最佳答案

我同意Nikola's answer中的建议:更通用的解决方案是您应该恢复 master 上的提交,然后 merge 到 develop 。重置master回到之前,如果您的团队愿意这样做,这些提交在这里也可以很好地发挥作用。

还有一个选择,就是 merge master进入develop并忽略 master 带来的变化。但只有在满足某些条件时才应考虑这一点:

  1. 您有太多提交需要恢复,将它们全部恢复起来会很麻烦。请注意提交是否是在 master 上的 merge 提交下引入的您可以简单地恢复 merge 提交,但是,只有当您希望恢复该 merge 带来的所有提交时才可以执行此操作。
  2. 您希望忽略 master 上的所有提交develop 中不存在的。 (如果情况并非如此,有一些解决方法,但您确实需要将所有希望忽略的提交组合在一起。)

如果你想走这条路,命令是:

git switch develop
git pull --ff-only # Update your copy of develop and if it errors you're out of sync!
git merge origin/master --strategy=ours # ignore everything new on master
# now you can merge develop into master

注意--strategy=ours有时写为-s ours并且这会 merge 到提交中而没有相应的更改。我会认为这是异常的,如果你这样做,我建议在 merge 提交消息中使用详细的注释来解释你这样做的原因。

如果您只有一些提交需要还原,我建议将它们全部还原,因为从读者的角度来看,历史跟踪更清晰、更容易。

关于git - 如何将开发分支 merge 到master中并忽略master中的更改?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72058820/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com