5

Javaでクラス名を変更することがあります。その結果、ファイル名も変更する必要があります。

SVN内のファイルの履歴を維持するために、RepairMoveと呼ばれるTortoiseSVNのツールを使用します。

[変更の確認]ビューで、2つのファイルを選択します。1つは欠落しており、もう1つはバージョン管理されていません。それらの1つを右クリックすると、移動を修復するオプションがあります。

これにより、SVN内の古いファイルが削除され、古いファイルの履歴を添付しながら新しいファイルが追加されます。そうすれば、svn logを実行すると、ファイル名が変更される前からの履歴全体を確認できます。

gitには同等のコマンドがありますか?私が読んだワークフローから、次のことを行う必要があるようです。

git mv <old filename> <new filename>
# Make the class name changes to reflect the filename change. 
git commit -a -m "Changed filename from Foo.java to Bar.java"

これは物事を行うには長い道のりのようです。

git mvファイルを手動で移動してファイル自体に変更を加えると、使用できるようになると思いました。gitに変更を追加するとともにgit mv、コマンドの単なるラッパーのようです。mv

移動が発生した後、移動したファイルをgitに通知する方法はありますか?

4

1 に答える 1

4

Gitは、ファイルの名前が変更されたときの処理に非常に優れていることがわかりました。

削除されたファイルと新しいファイルをコミットすると、両方のファイルの内容が類似しているかどうかが比較されます。

ファイルが特定のしきい値に達すると、コミットによってファイルの追加と削除が自動的に名前変更に変更されます。これは、ファイルを作成した後、実際のコミット後に表示される場合がgit addあります。git rm

したがって、たとえば、ファイル名またはパッケージ名が変更されると、Javaファイルはわずかに変更されます。Gitは、削除されたファイルと追加されたファイルの内容を比較し、それらがほとんど同じであることを確認して、名前が変更されたファイルとしてマークします。

于 2013-03-20T06:25:33.563 に答える