在执行git commit --amend之后将更改引入新分支

时间:2019-10-09 20:55:13

标签: git github

我的工作是当前的提交工作流程。

我将变更提交给master,然后提交以进行CR(代码审查)。

-编辑-注意,代码审核过程不涉及原始操作,即我不重写远程历史记录。

如果我进行更改以解决CR,我不会进行新的提交,而是在主服务器上的旧提交上使用git commit --amend

master: A (out for CR) --\
dev:                      \ -- B.

make changes on A, so now my tree looks like this:

master: A' (modified A created with commit --amend)
dev: A -- B

我想要的是使它看起来很简单的方法

master: A' --\
dev:          \-- B

我将通过分支继续在旧功能的基础上进行开发。我无法进行简单的变基,因为--amend命令会删除master上的旧提交。

现在,我正在做的是重新设置master的基础,然后进行交互式基础调整,以从dev的历史记录中删除旧的A。有更好的方法吗?

1 个答案:

答案 0 :(得分:1)

为什么您不应该修改推送的历史记录

(OP明确表示他不打算精通掌握,所以对将来的人来说更多。)

您将为此感到头痛-充满了强迫推翻,公共历史的改写,以及真正奇特的拉扯。

真的,只是不要。

与重新推送历史记录相同。

不要这样做。你被警告了。

如果你坚持

只要B仍然完全适用于A',您可以执行类似的操作

git checkout dev
# take all commits from A and put them on master (A')
git rebase --onto master A

git checkout -b newdev master
git cherry-pick dev
git branch -D dev
git branch -m dev

(在最后一行中,我的move语法可能不正确。)

要点是,请不要这样做。可以重写本地历史记录。推送完成后,请勿重写并推送到同一位置。改为推送到新分支。