在我们的git repo中,我们意外地提交了删除所有文件的提交.这个提交被推送到我们的中央服务器,并被其他开发人员和构建服务器拆除,因此重写历史记录以撤消这个并不理想.相反,我们进行了另一次回滚提交,将所有文件恢复到之前的状态,另一次尝试回滚提交,以某种方式只恢复了一些文件.
cc043989 Rollback commit (goes back to 4bf31def)
f5d7f10e Failed rollback commit
cd60376f Delete all files commit
4bf31def Last good commit
.
.
.
Run Code Online (Sandbox Code Playgroud)
我们关注的是这是否会产生任何长期影响,特别是关于与特征分支和/或从子树回购合并的问题.如果将来不断进行合并或其他更具挑战性的事情,可能值得重写历史记录并手动处理构建服务器/其他开发人员回购.
假设您的历史记录如下所示:
A --- B --- C --- D 主控 \ E --- F 主题
在提交“B”中,您不小心删除了所有文件。在提交“C”中,您恢复所有文件。
当您将主题分支合并到主分支时,您会遇到比其他情况更多的合并冲突。我建议重写历史记录,就好像文件从未被删除一样,因为保留该提交没有真正的好处(除非它是一个非常公共的分支)。
要删除提交,
git checkout master
git rebase -i 4bf31def
Run Code Online (Sandbox Code Playgroud)
然后注释掉错误的提交:
# cc043989 回滚提交(返回到 4bf31def) # f5d7f10e 回滚提交失败 # cd60376f 删除所有文件提交 4bf31def 最后一次良好的提交
好消息是您可以慢慢来。您可以继续工作并稍后修复历史记录,也可以立即修复它。
| 归档时间: |
|
| 查看次数: |
74 次 |
| 最近记录: |