0

コード レビュー ツールとして Gerrit と共に git を使用し、関連付けられたインターフェイス (MyModel) を持つモデル クラス (MyModelImpl) を使用します。このセットアップはやり過ぎであることがわかったので、インターフェイスを削除したいと考えています。また、MyModel クラス名をコードに保持したいと考えています。そこで、"MyModel.java" を削除して "MyModelImpl.java" を "MyModel.java" に名前を変更し、すべてがコンパイルされるように内容を変更します。また、以前は「MyModelImpl.java」として知られていたファイルの履歴をそのまま保持したいと考えています。

単一のコミットでこれを行うことは可能ですか?

もちろん試してみましたが、Gerrit で「MyModelImpl.java」が削除され、「MyModel.java」が完全に変更されていることがわかります。そして、「MyModelImpl.java」の履歴が失われます。

「MyModel.java」を削除するだけではコミットがコンパイルされず、MyModel のすべての使用を MyModelImpl に変換してコミットし、その後に MyModelImpl を MyModel に名前変更して 2 回目のコミットを行うため、1 回のコミットで実行したいと考えています。大規模なコミットが発生し (ほとんどの場合、相互にキャンセルされます)、コード レビューが困難になります。

4

1 に答える 1

0

あなたの最初のアプローチは完全に正しかった - そして履歴はMyModel.java. ただし、実行する必要はありませgit log MyModel.javagit log --follow MyModel.java。2 番目のアプローチに慣れている場合は、インタラクティブなリベースを介してコミットを「押しつぶす」ことができます (複数のコミットが 1 つのコミットになります) git rebase -i。ただし、これはあなたの場合は必要ありません。使用しないことに決めた場合git rebaseでも、それに関する man ページを読む必要があります。素晴らしいコマンドです!

于 2013-04-08T13:16:08.227 に答える