小编All*_*ght的帖子

强制推送后重新设置基准

我有一个功能分支 A。然后我开始开发依赖于 A 的第二个功能,因此我将我的新功能分支 B 基于 A:

git checkout A
git checkout -B B
Run Code Online (Sandbox Code Playgroud)

我在 B 上做了一些工作,所以现在 BI 上有提交 1(来自 A)和新的提交 2。我们公司总是尽可能地将一个 PR 的所有提交压缩在一起,所以在某一时刻我强制推动 A这样 A 就只提交了 1'。现在我想将 B 变基为 A(或 master,在 A 合并后),但由于我强制推送了 A,git 尝试应用提交 1,这显然失败了。

有两种方法可以解决这个问题,但都不是很好:

使用 git Cherry-pick:

git checkout B
git checkout -B B2
git log // copy latest commit id
git checkout B
git reset --hard A
git cherry-pick <commit-id>
Run Code Online (Sandbox Code Playgroud)

使用软复位:

git checkout B
git reset --soft HEAD~1
git stash
git reset --hard A
git …
Run Code Online (Sandbox Code Playgroud)

git branch rebase

9
推荐指数
1
解决办法
3475
查看次数

标签 统计

branch ×1

git ×1

rebase ×1