web-dev-qa-db-ja.com

Gitリポジトリからディレクトリを削除する方法

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

1040
Sahat Yalkabov

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

両方のディレクトリで 'master'をチェックアウトすることができます。

git rm -r one-of-the-directories
git commit -m "Remove duplicated directory"
git Push Origin <your-git-branch> (typically 'master', but not always)

ローカルではなく、gitからディレクトリを削除します

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

その場合は以下を使用してください。

git rm -r --cached myFolder
1996
karmakaze

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


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

git rm -r --cached FolderName
git commit -m "Removed folder from repository"
git Push Origin master

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

次回のコミットでそのフォルダを無視するには、ルートに .gitignore という名前のファイルを1つ作成し、そのフォルダ名をその中に入れます。あなたは好きなだけ置くことができます

.gitignore fileはこのようになります。

/FolderName

remove directory

243
eirenaios

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

67
cmcculloh

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

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

20
Breen ho

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

これはSubversionとは異なり、明示的にsvn rm emptyfolder/を指定する必要があります。また、gitのmanページで「バカなコンテンツトラッカー」と表示されているのも偶然です。

"gitリポジトリに空のディレクトリを追加するにはどうすればよいですか" このトピックの FAQへのリンク

現在、gitインデックス(ステージング領域)の設計ではファイルの一覧表示のみが許可されており、空のディレクトリを許可するように変更できるほど十分な権限を持っている人はいません。

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

あなたは "git add <dir>"と言うことができ、そこにファイルが追加されます。

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

16
dbr

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

ディレクトリを削除した後で、変更をコミットしてください: git commit -m "あなたのコミットメッセージ"

次に、単にリモートGITディレクトリに変更をプッシュします。 git Push Origin < ブランチ名 >

6
anky

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

rm -r folder_name
git add --all
git commit -m "some comment"
git Push Origin master

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

4
ettanany

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

git rm -r folder_name
git commit -m "your commit"
git Push Origin master
4
shrikant

空のフォルダを削除する

私が作成した空のディレクトリ(フォルダ)を削除したかったのですが、Gitが空のディレクトリを追跡できないという調査の結果、削除できませんでした。作業ツリーに空のディレクトリがある場合は、単にそれを削除してください。

rm -r folderName

Gitを巻き込む必要はありません。

3
Rida

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

2
Sergey Groshev

私の同僚の1人は BFG Repo-Cleaner を提案しました - /私はこれが強力だと思います。不要なデータを削除するだけでなく、関連するコミット情報からリポジトリを消去することもできます。

1
thanh.h.le

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

mkdir <YOUR-DIRECTORY>

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

git status

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

touch /YOUR-directory/.keep

さて、あなたがgit statusを打った場合、Gitは変更を知っているでしょう。

ディレクトリを削除したい場合は、このコマンドを使用してください。

rm -r <YOUR-DIRECTORY>

git statusを使用して確認した場合は、ディレクトリが削除されたことがわかります。

1
Abo3atef

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

  1. git init
  2. git config user.name "someone"
  3. git config user.email "[email protected]"
  4. git rm -r
  5. git commit -m "dirの削除"
  6. gitプッシュオリジンマスター
1
Zeus

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

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

フォルダを.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 gc --Prune=all --aggressive

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

git Push

これで終わりです

しかし、次のようにすると、すべてのブレイクにすべての変更をプッシュすることができます。しかし、このコマンドには注意してください。

git Push Origin --all --force
git Push Origin --tags --force

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

0
Skyborg