GitHubリポジトリに2つのディレクトリがあります。それらの1つを削除したいのですが。リポジトリ全体を削除して再作成せずにどうすればよいでしょうか。
両方のディレクトリで '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 rm -r --cached myFolder
ディレクトリを削除する手順
git rm -r --cached FolderName
git commit -m "Removed folder from repository"
git Push Origin master
次回のコミットでそのフォルダを無視する手順
次回のコミットでそのフォルダを無視するには、ルートに .gitignore という名前のファイルを1つ作成し、そのフォルダ名をその中に入れます。あなたは好きなだけ置くことができます
.gitignore fileはこのようになります。
/FolderName
何らかの理由でkarmakazeが言ったことがうまくいかない場合は、使用したいディレクトリを削除するか、ファイルシステムブラウザを使用して削除してください(例:Windowsのファイルエクスプローラ)。ディレクトリを削除した後、次のコマンドを発行します。git add -A
その後git commit -m 'deleting directory'
その後git Push Origin master
。
あなたはこれを試すことができます:git rm -rf <directory_name>
ディレクトリを強制的に削除します。
ディレクトリ内のファイルを削除すると(他の回答で説明されているようにgit rm
で)、ディレクトリはgitに関する限り存在しなくなります。空のディレクトリをコミットすることも、削除することもできません。
これはSubversionとは異なり、明示的にsvn rm emptyfolder/
を指定する必要があります。また、gitのman
ページで「バカなコンテンツトラッカー」と表示されているのも偶然です。
"gitリポジトリに空のディレクトリを追加するにはどうすればよいですか" このトピックの FAQへのリンク :
現在、gitインデックス(ステージング領域)の設計ではファイルの一覧表示のみが許可されており、空のディレクトリを許可するように変更できるほど十分な権限を持っている人はいません。
ディレクトリはその中にファイルを追加するときに自動的に追加されます。つまり、ディレクトリをリポジトリに追加する必要はなく、独自に追跡することもありません。
あなたは "
git add <dir>
"と言うことができ、そこにファイルが追加されます。チェックアウトにディレクトリが本当に必要な場合は、その中にファイルを作成する必要があります。 .gitignoreはこの目的にはうまくいきます。空のままにしておくことも、ディレクトリに表示されるはずのファイルの名前を入力することもできます。
Gitディレクトリに移動して、次のコマンドを入力します。 rm -rf < ディレクトリ名 >
ディレクトリを削除した後で、変更をコミットしてください: git commit -m "あなたのコミットメッセージ"
次に、単にリモートGITディレクトリに変更をプッシュします。 git Push Origin < ブランチ名 >
私は通常、リモートリポジトリからファイル/フォルダを削除するためにgit add --all
を使います
rm -r folder_name
git add --all
git commit -m "some comment"
git Push Origin master
master
はリポジトリの他のブランチに置き換えることができます。
次のように、フォルダをローカルに削除してからプッシュすることができます。
git rm -r folder_name
git commit -m "your commit"
git Push Origin master
空のフォルダを削除する
私が作成した空のディレクトリ(フォルダ)を削除したかったのですが、Gitが空のディレクトリを追跡できないという調査の結果、削除できませんでした。作業ツリーに空のディレクトリがある場合は、単にそれを削除してください。
rm -r folderName
Gitを巻き込む必要はありません。
Attlasian Source Tree(Windows)を使用することができます( https://www.atlassian.com/software/sourcetree/overview )。ツリーからファイルを選択して、上部の「削除」ボタンを押すだけです。ファイルはローカルリポジトリとローカルgitデータベースから削除されます。次にコミットしてからプッシュします。
私の同僚の1人は BFG Repo-Cleaner を提案しました - /私はこれが強力だと思います。不要なデータを削除するだけでなく、関連するコミット情報からリポジトリを消去することもできます。
新しいディレクトリを追加するには
mkdir <YOUR-DIRECTORY>
Gitはディレクトリではなくファイルを追跡するため、Gitはこの新しいディレクトリを認識しません。DIRECTORY
git status
Gitは私たちが行った変更を認識しないので、Gitにこの新しい変更を認識させるために隠し.keep
ファイルを追加します。
touch /YOUR-directory/.keep
さて、あなたがgit status
を打った場合、Gitは変更を知っているでしょう。
ディレクトリを削除したい場合は、このコマンドを使用してください。
rm -r <YOUR-DIRECTORY>
git status
を使用して確認した場合は、ディレクトリが削除されたことがわかります。
最初のgitコマンドは何かを削除する前にあなたが誰であるかを知る必要があります。
私は次のことをしました:
フォルダを.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から削除されましたが、ローカルディスクからは削除されませんでした。