gpt4 book ai didi

git 覆盖分支但保留历史

转载 作者:行者123 更新时间:2023-12-05 01:36:32 26 4
gpt4 key购买 nike

我想用另一个分支(即 master)覆盖开发分支中的所有内容,但我不想错过开发分支上的旧提交。

这就是我想要的:

what I want

我都试过了 merge with ours strategydoing an hard reset但是开发分支不断丢失旧的提交。

我想要获得的是蓝色和红色之间的差异为零的提交,以及在区分蓝色和第一个黑色代码时丢弃的代码。


只是分享到目前为止尝试过的解决方案的概述。通过这样做:

git checkout master
git merge -s ours dev
git checkout dev
git merge master

我得到这个(开发从主人那里得到所有的历史)

merge

通过这样做

git checkout dev
git reset --hard master

我得到这个(如果我 push 开发我将失去所有的黑色提交):

reset

如果我这样做:

git checkout dev
git merge $(git commit-tree -p dev -m "Align master > dev" master^{tree})

我得到了这个(几乎完美,但我很难记忆起我做这个把戏的确切时刻):

enter image description here

最佳答案

这可以是这样的:

git checkout -f develop # go to develop branch
git merge --no-commit master
git checkout master -- . # this checkouts code from master and doesn't switch branch
# you are still in merge process on branch develop
git commit

注意 -- . 会改变 git checkout 的行为。

关于git 覆盖分支但保留历史,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61914439/

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