リポジトリ内のいくつかのファイルを新しいフォルダに移動しようとしています。 git/TortoiseGitに、これが削除や複数の追加ではなく移動であることを認識させたいです。
どうすればこれを機能させることができますか? TortoiseGitのドキュメントをチェックしてGoogleを検索しましたが、あまり役に立ちませんでした。
だから、私が持っているのはこの構造です:
repo_root/somefile.txt
私が欲しいもの:
repo_root/new_folder/somefile.txt
もちろん、「somefile.txt」は、移動されるすべてのファイルとフォルダーを表します。
次の点に注意してください:Gitはファイルのコンテンツのみを追跡します
From Moving Files Pro Git book v2のセクション:
他の多くのVCSシステムとは異なり、Gitはファイルの移動を明示的に追跡しません。 Gitでファイルの名前を変更した場合、ファイルの名前を変更したことを示すメタデータはGitに保存されません。しかし、Gitは事後にそれを理解することについてかなり賢いです
そして、移動と名前の変更はGitでも同じです。
したがって、Gitは、移動/名前の変更が自動的に機能することを検出し、それらのファイルが変更されていないことを前提としています。
ファイルを移動/名前変更する場合にのみ、Gitは次のことを行います。
abc
であると想定します。abc
であると想定します。追跡されたファイルをいくつか変更し、それらを他のフォルダーに移動したとします。その後、残念ながら、gitはコミット時に名前の変更/移動としてそれらを自動的に検出できません。
本当にgitに名前の変更/移動を自動的に追跡させたい場合は、実行する必要があります:
ファイルを変更せず、1回のコミットでファイルの名前変更/移動のみを行うようにしてください。
ファイルの変更とファイルの移動を同時に行い、GitがTortoiseGitを使用して名前の変更/移動としてそれらを検出するようにしたい場合は、次のようにします。
注:ファイルの名前を1つずつ変更する必要があります。やらなければならない仕事がたくさんあるとします。したがって、ファイルの名前のみを変更することをお勧めします。
注2:ファイルでたくさんを変更すると、gitはそれが名前変更/移動であると理解できません。
作業ツリー内でファイルを移動したい場合、おそらく別のサブフォルダーに移動したい場合は、右マウスのドラッグアンドドロップハンドラーを使用できます。
A.移動するファイルまたはディレクトリを選択します
B.right-dragそれらを作業ツリー内の新しい場所にドラッグします
C.マウスの右ボタンを離す
D.ポップアップメニューでコンテキストメニュー→Gitバージョン管理されたファイルをここに移動を選択します
コミットした後、Gitはバックエンドでこれを処理します。コミットされていないファイルを処理している間は、最初は作成と削除を別々のアクションとして扱いますが、コミットした後は、作成を使用して削除を解決し、実際に単なるファイル移動であるかどうかを確認します。 gitがファイルの移動を見つけたときに、「古いファイル==>新しいファイル」というメッセージのあるコミットログでこれを確認できます。
または、安全に感じる場合はgit mvを使用できます https://git-scm.com/docs/git-mv