我的工作是当前的提交工作流程。
我将变更提交给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。有更好的方法吗?
答案 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语法可能不正确。)
要点是,请不要这样做。可以重写本地历史记录。推送完成后,请勿重写并推送到同一位置。改为推送到新分支。