0

我们使用 git,将 Gerrit 作为代码审查工具,我们有一个模型类 (MyModelImpl) 和关联接口 (MyModel)。我们已经意识到这个设置是多余的,所以我们想删除接口。我们还希望在代码中保留 MyModel 类名。所以我们要删除“MyModel.java”并将“MyModelImpl.java”重命名为“MyModel.java”,并更改内容以使所有内容都能编译。我们希望保持以前称为“MyModelImpl.java”的文件的历史完整。

是否可以在一次提交中执行此操作?

我们当然试过了,我们在 Gerrit 中看到的是“MyModelImpl.java”被删除了,“MyModel.java”被彻底改变了。并且“MyModelImpl.java”的历史丢失了。

我们希望在单个提交中执行此操作,因为仅删除“MyModel.java”会导致提交无法编译,并且在提交时将 MyModel 的所有用法转换为 MyModelImpl,然后将 MyModelImpl 重命名为 MyModel 进行第二次提交会导致大量提交(主要是相互抵消),这对代码审查来说是一件痛苦的事情。

4

1 回答 1

0

您的第一种方法是完全正确的 - 历史应该仍然完好无损MyModel.java。但是,您不能运行git log MyModel.java,而是运行git log --follow MyModel.java。如果您对第二种方法感觉更舒服,您可以通过交互式 rebase 来“压缩”提交(使多个提交一次提交)git rebase -i:. 不过,在您的情况下,这应该不是必需的。如果您决定不使用git rebase,您仍然应该阅读有关它的手册页。这是一个了不起的命令!

于 2013-04-08T13:16:08.227 回答