90

空のフォルダをローカルで削除するにはどうすればよいですか?また、プルプッシュを介してリモートを共有する他の共同編集者にも同じことが起こりますか?その意味で、フォルダはgitによって「追跡」されないことは知っていますが、疑問は残ります。

たとえば、ファイルを別のフォルダに移動し、(移動の)変更をコミットしました。

しかしgit rm name、「一致しない」というフォルダが存在しないため、フォルダを見つける ことができgit rmdir nameません。

私はできますが、git clean -f folderそれはどのように押し上げられますか?

ファイルを直接削除することはできrmますが、ディレクトリの削除を正しく実行してリポジトリにプッシュし、プルしたときに他の人にプッシュして既存のフォルダを削除するにはどうすればよいですか?

4

4 に答える 4

139

簡単な答え:Gitはディレクトリ自体を追跡しないため、ディレクトリへの変更(追加、削除など)をプッシュすることはできません

FAQによると:

現在、gitインデックス(ステージング領域)の設計では、ファイルの一覧表示のみが許可されており、空のディレクトリを許可するように変更を加える能力のある人は、この状況を改善するのに十分な配慮をしていません。

ディレクトリは、その中にファイルを追加するときに自動的に追加されます。つまり、ディレクトリをリポジトリに追加する必要はなく、ディレクトリ自体が追跡されることもありません。

Gitに関する限り、空のディレクトリはもう存在しません。

git clean -fd使用する習慣を身につけることで、ディレクトリの削除をプッシュする必要がなくなることがわかりました。ただし、git clean削除したくないアイテム(まだコミットしていない新しいファイルを含む)を削除できるため、コマンドを使用した場合に削除されるものgit clean -fdnを最初に確認する傾向があります。

そのディレクトリをクリーンアップするために、他の開発者と話をすることを余儀なくされる可能性があるようです。

于 2012-04-09T15:24:20.480 に答える
11
git add --all
git clean -f -d
git commit -m "trying to remove folders"
git push
于 2016-02-28T00:14:45.850 に答える
-1

空のフォルダをプッシュすることはできません。ただし、クローン/ローカルリポジトリ内の空のフォルダーをクリーンアップする場合は、最新の変更をコミットします。次に、ローカルコピー内の.gitフォルダー以外のすべてのファイルを削除します。次に、すべての変更を再度リセットします。これにより、すべてのファイルが元に戻りますが、追跡されない空のディレクトリは除外されます。

于 2016-07-26T10:53:43.903 に答える
-9

これを回避する少しハックな方法は、ディレクトリに偽のファイルを作成し、それをコミットしてから削除することです。それを削除すると、ディレクトリも削除されます。したがって、name/fake.txtを作成します

git add name/fake.txt
git commit -m "message"
git rm name/fake.txt
git commit -m "message2"
于 2014-07-29T15:04:02.337 に答える