【21.03.27~03.31成功！】gitignoreを導入する

#今起こっている問題
gulp.jsやluxy.jsを導入する際、npm installすると、node_modulesディレクトリが自動で追加される。
このnode.modulesフォルダがとんでもない容量があるらしく、githubにあげることが躊躇われる。
(と調べてる過程で出てきた)

#解決策 | .gitignoreファイルを作ればok
gitignoreというファイルを設定しておけば、gitが無視してくれるようなので、設定してみようと思う。

エンジニアの先輩に聞いたら、大規模開発では最初に設定したあとはほぼいじらないとのことなので、個人開発で導入したい人以外は特に調べる必要も無いのかも。

#前提
私の環境

```
% sw_vers
ProductName:	Mac OS X
ProductVersion:	10.15.7
BuildVersion:	19H524
```

#gitignoreの作り方

####手順
①`.gitignore`という名前のファイルを作る(touchでもvimでもなんでも)
②.gitignoreファイル内に、`node_modules/`を記載して保存
③ターミナルで`git add .`してみる
④`$ git status`でnode_modulesが無視されてるか確認
⑤無視されてたらここでcommitして完了。
無視されてなかったらキャッシュを削除するコマンド `$ git rm -r --cached node_modules`を叩く
⑥ ④からも一回やってみる。できてたらok
⑦もしできてなかったら[.gitignoreが反映されない！キャッシュ原因でないときは？
](https://bityl.co/6CW4)を参考にするといいかも。

参考記事たち
[Qiita: .gitignoreに記載したのに反映されない件
](https://qiita.com/fuwamaki/items/3ed021163e50beab7154)

https://qiita.com/growsic/items/b2965c0ba3b0aaae1ff8

#でも毎回.gitignore編集するのだるいよね
プロジェクト事にgitignore作るのだるいなーと思ってたのでUser/ディレクトリ配下にgitignoreデフォでできる設定とかいろいろ調べてやってみた。
けど私は失敗した&前述のようにエンジニアの先輩いわく一度いじったらあとはほぼいじる機会が無いみたいなので、まぁいっかと思って結局やってないです。
一応やったことだけ以下に残してます。


###①ターミナルを開く

###②gitの初期設定が済んでない人は済ませる

参考記事: [Mac Git 初期設定
](https://qiita.com/ucan-lab/items/aadbedcacbc2ac86a2b3)

```terminal
//gitのバージョンを確認
% git --version
git version 2.24.3 (Apple Git-128)

//.sshディレクトリを作成
% mkdir ~/.ssh
mkdir: /Users/yk_h/.ssh: File exists

//.sshディレクトリの下にconfigファイルを作成
% touch ~/.ssh/config

//*chmod はファイル or ディレクトリに対する権限を設定するコマンド。
//パーミッションはディレクトリは700、ファイルは600である必要があるらしい。
% chmod 700 ~/.ssh
% chmod 600 ~/.ssh/*

//xattr コマンドでMacの拡張ファイル属性(extended attributes)、
//いわゆるアットマークが付いてるのを削除できる
% xattr -cr ~/.ssh
```

###ssh configファイルの設定をする

vimでconfigファイルを開く

```
//ここはターミナル入力
% vi ~/.ssh/config
```

vimでconfigファイルが開けたら以下をコピペ

```
Host *
  StrictHostKeyChecking no
  UserKnownHostsFile=/dev/null
  ServerAliveInterval 15
  ServerAliveCountMax 30
  AddKeysToAgent yes
  UseKeychain yes
  IdentitiesOnly yes
```

:wqコマンドでvimからエグジットできます


私は[この記事:GitのSSH鍵設定をする
](https://qiita.com/ken0909/items/5e5a1dda60effb162d55)をみながらついでにgithubをpushするときに毎回聞かれて面倒だったSSH鍵を省略できる設定を追記しました

```~/.ssh/config
Host github
  HostName github.com
  User git
  Port 22
  identityFile ~/.ssh/github_id_rsa
  UseKeychain yes
  AddKeysToAgent yes
```

まだSSHが省略できるかはチェックしてないです


#gitディレクトリ,.gitignoreファイルを作成

gitディレクトリの作成

```
% mkdir -p ~/.config/git
```

ignoreディレクトリの作成

```
mkdir ~/.config/git/ignore
```

gitignoreファイルの作成&編集(gitディレクトリに移動するしてから、vimで開いた)

```
git % vi ignore/.gitignore
```

以下を記述して、:wqでエグジット

```..gitignore
.DS_Store
node_modules/
```


###エラー出現

node.modulesがあってgithubにあげたくないプロジェクトディレクトリに移ってプロジェクトをgit add.してみた

```
% git add .
fatal: cannot use /Users/yk_h/.config/git/ignore as an exclude file
```

ふざけんなよ。

一応エラー文でググったんだけど、解決方法がわからなかった。(参照した記事とかはここら辺[gitignore_globalを作成とその際に出たエラー](https://qiita.com/harukikaneko/items/f7aeb69d8032f7cc638a)

ので、一回ignoreごと削除してみる。
さっきのgitディレクトリに移って、ignoreを削除

```
git % rm -rf ignore
```
プロジェクトファイルに戻る

```
% git add .
```
問題なくaddできた。
でもこれ結局moduleごとaddされてんじゃない？わからんー






#giboっていうツールで.gitignoreファイルの自動生成ができるらしい

https://www.aizulab.com/blog/gibo-gitignore/

[このQiita記事: giboでgitignoreを自動生成する
](https://qiita.com/taquaki-satwo/items/358d2d473fff9a25d5eb)をみながら導入してみる。


```terminal.terminal
//①Homebrewをアプデする
% brew update

//②Homebrewでgiboをインストール
% brew install gibo 

// ③giboをアプデする
% gibo update

// ④giboのバージョンを確認
% gibo version
gibo 2.2.3 by Simon Whitaker <sw@netcetera.org>
https://github.com/simonwhitaker/gibo

```
giboのインストール完了。

####giboの基本コマンド

```
//giboが対応している環境を表示
% gibo version 

//giboのバージョンとか使えるコマンドとか基本情報の確認？
% gibo ls
gibo 2.2.4 by Simon Whitaker <sw@netcetera.org>
https://github.com/simonwhitaker/gibo

Fetches gitignore boilerplates from https://github.com/github/gitignore
・・・ update                Update list of available boilerplates
    version               Display current script version

//ヘルプを表示
% gibo help

//文例が保存されているディレクトリ名を表示　※文例を自分で修正可能
$ gibo root  
```

###giboの使い方
NodeのプロジェクトでエディタはVS Codeの場合。

```
% cd ~/.gitignoreファイルを作成したいリポジトリ
gibo dump Node VisualStudioCode >> .gitignore
```

らしい。
なるほどよくわからん。

でも
`% gibo dump Node > .gitignore`
でとりあえずNodeは入れてみた。

#まだnode.modulesフォルダがaddされてる問題

プロジェクトファイルでgit add .してみたらやっぱりnode.modulesフォルダはaddされる..なぜ..




#参考記事


↓なんかサブコマンドの作り方とか書いてあって面白かった
https://cameong.hatenablog.com/entry/2020/07/06/182845