我们使用不同分支的git。一位同事犯了一个错误并将一些不同的提交提交(+推送)到错误的分支(dev分支)。
他所承诺的分支机构应该合并为“#master;'无论如何。我想知道这些步骤是否安全:
这些会在以后的存储库中出现任何问题吗? (例如:使用合并提交以及原始提交被删除的事实)?
答案 0 :(得分:0)
原始提交不会被删除。它们仍处于主分支历史中,在开发分支历史中不再存在。你不应该得到任何问题,除了dev分支的重写历史,这将迫使每个人得到那个"错误" dev分支的状态已经基于并在其上工作以重新定义其本地分支,如git rebase
的帮助所述。
答案 1 :(得分:0)
您提出的步骤肯定会符合您的预期。只有一点澄清:git revert
实际上创建了一个新的提交(取消了我们正在恢复的提交所做的事情)。因此,在最后一步中,您无需强制以便push
。
请注意,如果您愿意强行推送(我假设您知道后果),您可以更轻松地做点事情:
dev
分支,以便它不包含您不想要的提交(例如:git reset --hard <sha1 of commit before he merged>
git push -f origin dev
)现在他回到错误合并前的位置,所以他可以使用正确的分支重新开始。
更精确:让我们说你有以下提交
-- A -- B
\- dev
-- C -- D
\- master
并且您的同事将提交E
添加到了错误的分支。然后,根据您提出的步骤,您将拥有:
-- A -- B -- E -- E'
\ \-- dev
-- C -- D ----F
\-- master
其中F
只是一个合并提交,其中E'
是还原。
我们可以看到:就代码而言,每个分支都处于预期状态。但是,提交E
在拓扑上不会从dev
中删除。