我有一个棘手的情况。我需要删除并重新提交一些我已经推送到github远程仓库的提交。但是这些提交不再是HEAD了(人们把它们推到了它上面)。
我知道我可以恢复提交,因此保留了提交历史记录。但要求是让错误的提交消失。
所以:
D <- other people's commit
|
C <- B and C are wrong commits! They need to be removed
| <- The changes that should be preserved from B and C will be
B <- committed on top of D
|
A <- this was the initial state
为了给出更多解释,我正在使用2个不同的GitHub帐户进行工作/个人。我意外地使用个人GitHub帐户将B和C提交给公司回购。因此,我需要从非员工帐户中删除这些提交
答案 0 :(得分:0)
你做不到。
问题是提交D
内部有提交C
的ID。你为摆脱B
和C
所做的任何事情,如果它完全有效,也摆脱了提交D
。
您可以将提交D
复制到与D'
非常相似的新D
但是:
B
和C
以及A
作为其父提交但是如果你这样做,你必须与也现在提交D
的其他人一起协调,尤其是那些写过它的人,并且所有人> 切换到以D'
为父级的新A
副本。
通常这不值得做。让其他47人撤消并重做所有他们的工作要困难得太多,只是为了弥补你之前犯的错误。忍住这个错误。
如果错误比让其他人为了让他们重新做所有他们的工作而更加生气,请参阅How to modify existing, unpushed commits?