【问题标题】:Git force re-merge of one branch into anotherGit强制将一个分支重新合并到另一个分支
【发布时间】:2017-08-04 14:04:09
【问题描述】:

我有 demo 分支和 ma​​ster 分支。

当我在 demo 分支上时,我输入

git merge master

上面写着:

已经是最新的了。

但是当我表演时

git diff master demo

显示1000个文件不同。

我想让 git 从 ma​​ster 重新合并到 demo,同时保留 demo 中的更改,就像“demo”一样标题等。同时正确合并(替换)已更改的库。

【问题讨论】:

  • 也许你之前需要从远程 master 分支中拉取更改。在合并之前执行git checkout master && git pull

标签: git merge devops production


【解决方案1】:

经过斗争和分析 git 合并策略之类的东西,我最终做了什么

https://git-scm.com/docs/merge-strategies

是手动合并,如下:

  • 我创建了新文件夹,
  • 将 master 从 origin 签出到其中
  • 手动将文件从具有主分支的新文件夹复制到具有演示分支的旧文件夹
  • 在演示的分支文件夹中执行:git add --all
  • 然后git commit -m "merged manually"
  • 最后是git push

【讨论】:

    【解决方案2】:

    你想要做的是一个变基:

    git rebase origin/master
    

    说明:

    demo分支是这样的:

    demo = old-master + some_changes
    

    Git rebase 会将“old-master”替换为较新的,并保留演示更改。

    最后,你将拥有:

    demo = master + some_changes
    

    【讨论】:

    • 通过变基,demo 仍将不同于 master
    • 他不想demo=master,I want to have git re-merge master into demo,同时保持demo中的变化,如果他想要demo=master,他可以做一个@ 987654327@.
    • 不要做git reset --hard origin/master!在demo 中所做的所有更改都将丢失!
    • @Aleksandar Pavić,git rebase origin/master 给了你你需要的东西吗?
    【解决方案3】:

    如果您的demo 分支与master 不同,则master 中的所有提交将已经存在于demo 中,除非另一个分支在此期间合并到master 中。

    如果要将demo中的更改合并到master中,则checkout master然后合并demo

    git merge demo
    

    【讨论】:

    • 不,我想将master合并到demo中
    • "Already up-to-date." 表示,master 没有变化要合并到demo
    • 正如@ashmaroli 指出的那样。 master 中没有您在 demo 中没有的变化。 git diff master demo 仅显示与 master 相比您在 demo 中所做的更改。
    • 也许我不够清楚,我需要用 master 的东西强制覆盖 demo 中的东西。
    • 这仍然令人困惑,因为您说您需要保留 demo 中的更改,例如 demo 标题等
    猜你喜欢
    • 1970-01-01
    • 2013-11-09
    • 1970-01-01
    • 1970-01-01
    • 2022-11-09
    • 1970-01-01
    • 2019-03-11
    • 1970-01-01
    • 2013-02-21
    相关资源
    最近更新 更多