質問: 現在作成しているアプリで下記ディレクトリをGitHubには上げたくないので、 「.gitignore」ファイルに以下のように記述しました。 【.gitignore】※sample_app/.gitignore ``` /app/views/categories/ /app/views/chat/ /app/views/question_mailer/ ``` その後、 ``` git add -A git commit -m "add_.gitignore" git push -u origin master ``` を行いました。 が、GitHubを確認すると、「.gitignore」ファイルに記載したディレクトリがGitHubにアップされてしまっています。 これは「.gitignore」ファイルの書き方が間違っているのでしょうか? 間違っている場合は正しい書き方を教えて頂きたいです。 何卒宜しくお願い致します。
回答: `.gitignore` は名前の通り、Gitから特定のディレクトリ・ファイルを除外するための指定ですから、 * そのファイルはGithubだけでなくローカルでもGitで管理されなくなります * リポジトリへの新規追加を抑制するものなので、既にコミットされたファイルには適用されません `.gitignore` を書く前にコミットしてしまったファイルを取り除きたい場合、当該ファイルを `git rm --cached` することになりますが、当然それまでの履歴には残ったままになります。これも含めて削除するには、ファイルを追加した時点まで遡ってコミットをやり直したり、量が多ければ `git filter-branch` を使うことになります。 > > やりたいことはGitHubにPUSHする際に上記のディレクトリは上げたくないのですが、そのようなやり方はありますでしょうか? .gitignoreで行うか、他のやり方もあるのでしょうか? > > > Gitの仕組みとして、pushする時にはコミット単位でコピーされますから、コミットのうち一部のファイルだけpushすることはできません。またGithubには特定のファイルを非公開にする機能はありません。 ですから「諦めて公開してしまう」か「Gitの管理外に置いてしまう」のどちらかが多く、時々「非公開用と公開用でリポジトリを分ける」といったケースがあるぐらいかと思います。