1

次のフォルダー構造を持つ Git リポジトリがあります。

allprojectfiles
--otherfolders
--source
----projectname
------projectname
---------git initilalized here
---------otherfolders
---------workingonthesefiles(bound to remote)

プロジェクトを再構築して、履歴を失わずにallprojectfilesフォルダーから Git を追跡することはできますか?

4

2 に答える 2

3

Git はフォルダーではなく、ツリーと BLOB を追跡します

Git が行う唯一のフォルダー追跡は、ツリー コミットです。したがって、一般的なケースでは、フォルダーを自由に移動でき、Git は単純に新しいツリーをリポジトリーに書き込みます。

git mvこれらのディレクトリの移動を、それ以外の場合はクリーンな作業ツリーでステージングするために使用することをお勧めします。コミットのためにステージングされたファイル レベルの変更がない場合、Git 履歴は新しい構造を追加/削除操作ではなく、移動/名前変更として正しく扱います。

于 2013-07-15T18:19:31.113 に答える
1

git は名前の変更を明示的に追跡しません。移動のみを行うコミットが 1 つあることを確認してください (これは、別のパスでの削除 + 追加になります)。その後、git コマンドは移動を自動検出しますが、場合によっては (たとえば、2 つのファイルの内容が同じであるが、どちらが名前が変更されたかを論理的に判断できる場合)、適切な履歴のトレースに失敗することがあります。履歴を書き換えずにこれを回避できるとは思いません。

これは私にアイデアをもたらします: git filter-branch を使用すると、フォルダーを別の場所、つまり新しいレイアウトの「正しい」場所に抽出し、残りを再度追加できるはずです。ただし、これにより履歴が完全に書き換えられます。

于 2013-07-15T18:17:12.067 に答える