我想用另一个开发分支(即 master)覆盖开发分支中的所有内容,但我不想错过开发分支上较旧的提交。
这就是我要的:
我尝试与我们的策略合并并进行硬重置,但开发分支不断丢失旧的提交。
我想要获得的是蓝色和红色之间差异为零的提交,以及在蓝色与第一个黑色差异时删除的代码。
只是分享迄今为止尝试过的解决方案的概述。通过做这个:
git checkout master
git merge -s ours dev
git checkout dev
git merge master
Run Code Online (Sandbox Code Playgroud)
我得到了这个(开发人员从主人那里获取了所有历史记录)
通过做这个
git checkout dev
git reset --hard master
Run Code Online (Sandbox Code Playgroud)
我得到了这个(如果我推动开发,我将丢失所有黑色提交):
如果我这样做:
git checkout dev
git merge $(git commit-tree -p dev -m "Align master > dev" master^{tree})
Run Code Online (Sandbox Code Playgroud)
我得到了这个(几乎完美,但我很难回忆起我完成这个技巧的确切时刻):
这可以这样进行:
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
Run Code Online (Sandbox Code Playgroud)
请注意,拖尾-- .会改变 的行为git checkout。
| 归档时间: |
|
| 查看次数: |
1647 次 |
| 最近记录: |