1491

GitHubリポジトリに2つのディレクトリがあります。そのうちの1つを削除したいのですが。リポジトリ全体を削除して再作成せずに、どうすればそれを行うことができますか?

4

16 に答える 16

2793

gitとlocalからディレクトリを削除します

両方のディレクトリで「master」をチェックアウトできます。

git rm -r one-of-the-directories // This deletes from filesystem
git commit . -m "Remove duplicated directory"
git push origin <your-git-branch> (typically 'master', but not always)

gitからディレクトリを削除しますが、ローカルではありません

コメントで述べたように、あなたが通常したいことは、このディレクトリをgitから削除することですが、ファイルシステム(ローカル)から完全に削除することはしません

その場合、以下を使用します。

git rm -r --cached myFolder
于 2011-06-11T00:37:36.897 に答える
391

gitリポジトリからのみフォルダ/ディレクトリを削除し、ローカルからは削除しない場合は、3つの簡単なコマンドを試してください。


ディレクトリを削除する手順

git rm -r --cached FolderName
git commit -m "Removed folder from repository"
git push origin master

次のコミットでそのフォルダを無視する手順

次のコミットからそのフォルダーを無視するには、ルートフォルダー(gitが初期化されるメインプロジェクトディレクトリ)に.gitignoreという名前のファイルを1つ作成 し、そのフォルダー名をその中に入れます。必要な数のファイル/フォルダを無視できます

.gitignoreファイルは次のようになります

/FolderName

ディレクトリを削除する

于 2014-12-03T12:34:52.170 に答える
89

何らかの理由でkarmakazeが言ったことが機能しない場合は、ファイルシステムブラウザ(Windowsファイルエクスプローラーなど)を使用して、または使用するディレクトリを削除してみてください。
git add -A
ディレクトリを削除した後、次のコマンドを発行し
git commit -m 'deleting directory'
ます
git push origin master

于 2011-06-11T02:14:28.823 に答える
27

あなたはこれを試すことができます: git rm -rf <directory_name>

ディレクトリを強制的に削除します。

于 2013-10-23T10:21:33.503 に答える
19

(他の回答で説明されているように)ディレクトリ内のファイルを削除するとgit rm、gitに関する限りディレクトリは存在しなくなります。空のディレクトリをコミットしたり、削除したりすることはできません。

これは、明示的にしなければならないSubversionとは異なりsvn rm emptyfolder/、ちなみにmangitのページがそれ自体を「ばかげたコンテンツトラッカー」と表現している理由です。

「gitリポジトリに空のディレクトリを追加するにはどうすればよいですか」に関する回答は、このテーマに関するFAQにリンクしています。

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

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

「」と言うとgit add <dir>、そこにファイルが追加されます。

チェックアウトにディレクトリが本当に必要な場合は、その中にファイルを作成する必要があります。.gitignoreはこの目的に適しています。空のままにするか、ディレクトリに表示される予定のファイルの名前を入力できます。

于 2013-08-06T09:01:54.100 に答える
19

以前にフォルダをコミットしたことがあり、履歴からもディレクトリを削除したいと思います。

私は次のことをしました:

次の場所にフォルダを追加します.gitignore

echo Folder_Name/ >> .gitignore

すべてのコミットから削除します。

git filter-branch --index-filter 'git rm -rf --cached --ignore-unmatch Folder_Name/' --prune-empty --tag-name-filter cat -- --all

古いコミットから参照を削除します。

git for-each-ref --format="%(refname)" refs/original/ | xargs -n 1 git update-ref -d

すべての古い参照が完全に削除されていることを確認します

rm -Rf .git/logs .git/refs/original

ガベージコレクションを実行する

git gc --prune=all --aggressive

オンラインリポジトリに変更をプッシュします。

git push

これで完了です。

ただし、次の方法ですべての変更をすべてのブランチにプッシュできます。ただし、このコマンドには注意してください。

git push origin --all --force
git push origin --tags --force

その後、フォルダはgitから削除されましたが、ローカルディスクからは削除されませんでした。

于 2019-05-14T23:59:04.263 に答える
7

git Directoryに移動し、次のコマンドを入力します 。rm-rf<ディレクトリ名>

ディレクトリを削除した後、次の方法で変更をコミットします 。git commit -m "Your Commit Message"

次に、リモートGITディレクトリに変更をプッシュするだけです 。gitpushorigin<ブランチ名>

于 2016-07-13T11:53:31.923 に答える
6

空のフォルダを削除するため

作成した空のディレクトリ(フォルダ)を削除したかったのですが、gitはそれを削除できません。調査の結果、Gitが空のディレクトリを追跡しないことがわかりました。作業ツリーに空のディレクトリがある場合は、次のコマンドで削除する必要があります。

rm -r folderName

Gitを関与させる必要はありません。

于 2018-12-19T01:59:08.297 に答える
5

次のように、フォルダをローカルで削除してからプッシュできます。

git rm -r folder_name
git commit -m "your commit"
git push origin master
于 2016-02-26T18:59:11.110 に答える
4

私は通常git add --all、リモートリポジトリからファイル/フォルダを削除するために使用します

rm -r folder_name
git add --all
git commit -m "some comment"
git push origin master

masterリポジトリの他のブランチに置き換えることができます。

于 2016-09-05T15:41:41.380 に答える
2

Attlasian Source Tree(Windows)(https://www.atlassian.com/software/sourcetree/overview)を使用できます。ツリーからファイルを選択し、上部にある[削除]ボタンを押すだけです。ファイルはローカルリポジトリとローカルgitデータベースから削除されます。次に、コミットしてからプッシュします。

于 2015-09-01T18:04:22.770 に答える
1

私の同僚の一人が、私が強力だと思うBFGレポクリーナーを提案しました。不要なデータを削除するだけでなく、関連するコミット情報からリポジトリをクリーンアップします。

于 2016-11-16T14:28:00.133 に答える
1

最初のgitコマンドは、何かを削除する前に、あなたが誰であるかを知る必要があります

  1. git init
  2. git config user.name "someone"
  3. git config user.email "someone@someplace.com"
  4. git rm -r
  5. git commit -m "deleting dir"
  6. gitプッシュオリジンマスター
于 2017-07-06T21:27:33.690 に答える
1

新しいディレクトリを追加するには:

mkdir <YOUR-DIRECTORY>

しかし、Gitはディレクトリではなくファイルを追跡するため、Gitはこの新しいディレクトリを認識しません。

git status

Gitは私たちが行った変更を認識しないため.keep、この新しい変更によってGitが認識できるように隠しファイルを追加します。

touch /YOUR-directory/.keep

これで、git statusGitを押すと、変更が認識されます。

また、ディレクトリを削除する場合は、このコマンドを使用する必要があります。

rm -r <YOUR-DIRECTORY>

また、を使用してチェックするgit statusと、ディレクトリが削除されていることがわかります。

于 2017-10-22T15:22:11.907 に答える
1

2つの答えの組み合わせは私のために働いた

git rm -r one-of-the-directories
git commit . -m "Remove duplicated directory"
git push

それでも警告が表示される場合は、ファイルを手動で削除してください

git filter-branch --tree-filter 'rm -rf path/to/your/file' HEAD
git push
于 2019-12-31T13:01:45.227 に答える
-3

試行rm -r -f <folder name>またはrm -r --force <folder name>-フォルダを強制的に削除します

于 2021-02-08T05:53:44.367 に答える