

現在作成しているアプリで下記ディレクトリをGitHubには上げたくないので、  
「.gitignore」ファイルに以下のように記述しました。

【.gitignore】※sample_app/.gitignore

[code]

    /app/views/categories/
    /app/views/chat/
    /app/views/question_mailer/
    
[/code]

その後、

[code]

    git add -A
    git commit -m "add_.gitignore"
    git push -u origin master
    
[/code]

を行いました。  
が、GitHubを確認すると、「.gitignore」ファイルに記載したディレクトリがGitHubにアップされてしまっています。  
これは「.gitignore」ファイルの書き方が間違っているのでしょうか？  
間違っている場合は正しい書き方を教えて頂きたいです。  
何卒宜しくお願い致します。


CC BY-SA 3.0
2016-05-12T05:04:48.820
24781
2016-05-12T06:30:34.033
2016-05-12T05:16:35.837
8000
12323
question
ruby-on-rails git
.gitignoreに記載したファイルがGithubにpushされてしまう


`.gitignore` は名前の通り、Gitから特定のディレクトリ・ファイルを除外するための指定ですから、

  * そのファイルはGithubだけでなくローカルでもGitで管理されなくなります
  * リポジトリへの新規追加を抑制するものなので、既にコミットされたファイルには適用されません

`.gitignore` を書く前にコミットしてしまったファイルを取り除きたい場合、当該ファイルを `git rm --cached`
することになりますが、当然それまでの履歴には残ったままになります。これも含めて削除するには、ファイルを追加した時点まで遡ってコミットをやり直したり、量が多ければ
`git filter-branch` を使うことになります。

> やりたいことはGitHubにPUSHする際に上記のディレクトリは上げたくないのですが、そのようなやり方はありますでしょうか？
> .gitignoreで行うか、他のやり方もあるのでしょうか？

Gitの仕組みとして、pushする時にはコミット単位でコピーされますから、コミットのうち一部のファイルだけpushすることはできません。またGithubには特定のファイルを非公開にする機能はありません。

ですから「諦めて公開してしまう」か「Gitの管理外に置いてしまう」のどちらかが多く、時々「非公開用と公開用でリポジトリを分ける」といったケースがあるぐらいかと思います。


CC BY-SA 3.0
2016-05-12T06:30:34.033
24784
2016-05-12T06:30:34.033
8000
24781
answer