Edited at

.gitignoreを自動的に作る(gibo, gitignore.io を使う)


.gitignoreを自動的に作る(gibo, gitignore.io を使う)

.gitignore は自動生成して、自分で削った方が絶対楽なので、少し調べた結果をまとめておく。

どちらを使ってもいいとは思うけど、個人的には


  • gibo


    • gitリポジトリをたくさん作ってたくさん.gitignore作るとか、Macとか



  • gitignore.io


    • 普段からgitリポジトリあまり作らない、Windows環境だったり、いろいろインストールするのがめんどくさい(または出来ない)



って使い分けができそうだなと感じた。


.gitignore自動生成サービス

ザクっと調べた所、下記の2つが見つかる。


  • gibo (ツール)

  • gitignore.io (webサイト)


gibo


  • コマンドラインツール



  • macならbrew導入して brew install gibo


  • windows でも使えるらしいことを最近知った(試してない)


    • scoop導入していけるみたいですね

    • リポジトリ引っ張ってきてパス通せばwindowsでもmacでもいけそう




  • 言語名、環境名での指定が可能



    • gibo java とか gibo xcode とか

    • 組み合わせも可能。 gibo vim python とか




  • 実際使うときは .gitignore ファイルにへの書き出しが必要



    • gibo vim go > .gitignore って感じ




  • デメリットとしては gibo -u をしないと最新版の.gitignoreが導入されないことと、brewとかインストールしないといけないところでしょうか?


    • githubでリポジトリのzipを持ってこれるけど、そのタイミングでの最新版しか持ってこられないので… 微妙かなあ(git入れてgit cloneすれば良いけど、それならbrew入れれば良くないですかって話になりそう)

    • gibo自体のアップデートと、.gitignoreのテンプレートリポジトリをアップデートするっていう2つのアップデートがあるのが若干罠かも。




余談

公開されているコードを見た感じだと、github公式のgitignoreリポジトリを引っ張ってきて、該当するものをローカルで探すみたいな形になっている。

ローカルに.gitignoreのリストがあるので、オフラインで使えるというのはメリットなのかもしれない。


gitignore.io


  • webサイト

  • https://www.gitignore.io/

  • 文字列を選択して入れると良さそう。

  • 検索ワードは複数使えます

gitignore_io_-_Create_Useful__gitignore_Files_For_Your_Project.png


  • githubでソースコード公開されてる(今知った)



  • githubのリポジトリにも書いてあるけど、curl -L -s https://www.gitignore.io/api/java みたいな形で持ってこれる

  • bashrcとかに関数用意しておくのが無難かなあ


  • デメリットとしてはWebに接続していないと使えないことでしょうかね。Webに表示されているものをコピペするのはめんどくさいので、curlとかで持って来なきゃならないのもめんどくさそう。


ちょっとだけ頑張って shell の関数を書いてみた。 .zshrc に書き込んだので、シバンは省略している。 create_gitignore python pycharm とかで使えるはず。当方はMacOS上でzshを利用しているので、他のOSを使っている方はオプション等の動作の違いにご注意を。

create_gitignore() {

# argv length check
if [ -z $1 ]; then
echo 'Usage: git_ignore arg1 arg2 arg3 ...'
return
fi

# overwrite check
flag='y'
if [ -e '.gitignore' ]; then
printf 'Are you overwrite .gitignore ? [y/N]: '
read flag;
fi

# download .gitignore
if [ $flag = 'y' ]; then
s=$(echo $@ | tr ' ' ',')
curl -f https://gitignore.io/api/$s -o .gitignore
echo "create .ignore file for: ${s}"
fi
echo 'finish.'
}


余談

検索後の結果を見てもパット見なぜリダイレクトしているのかわからなかったので、curlコマンドで調べてみる。

[08/05 16:27:27] $ curl -L --max-redirs 0 -D - https://www.gitignore.io/api/java

HTTP/1.1 200 OK
Date: Sat, 05 Aug 2017 07:28:38 GMT
Content-Type: text/plain; charset=utf-8
Content-Length: 378
Connection: keep-alive
Set-Cookie: __cfduid=dec3a3a3464c007b70d8e098d0b9647c11501918117; expires=Sun, 05-Aug-18 07:28:37 GMT; path=/; domain=.gitignore.io; HttpOnly
Via: 1.1 vegur
Server: cloudflare-nginx
CF-RAY: 38980a689f452e15-NRT

(後略)

普通に取れている?

プロトコルをhttpsからhttpに変更してみる。

[08/05 16:31:49] $ curl -L --max-redirs 1 -D - http://www.gitignore.io/api/java

HTTP/1.1 301 Moved Permanently
Date: Sat, 05 Aug 2017 07:31:54 GMT
Transfer-Encoding: chunked
Connection: keep-alive
Cache-Control: max-age=3600
Expires: Sat, 05 Aug 2017 08:31:54 GMT
Location: https://www.gitignore.io/api/java
Server: cloudflare-nginx
CF-RAY: 38980f37f6ab2e0f-NRT

HTTP/1.1 200 OK
Date: Sat, 05 Aug 2017 07:31:55 GMT
Content-Type: text/plain; charset=utf-8
Content-Length: 378
Connection: keep-alive
Set-Cookie: __cfduid=d8be36077fc78404ce4b267050b14f09c1501918314; expires=Sun, 05-Aug-18 07:31:54 GMT; path=/; domain=.gitignore.io; HttpOnly
Via: 1.1 vegur
Server: cloudflare-nginx
CF-RAY: 38980f3b2a2e2e27-NRT

(後略)

どうやらhttpsに移行してるらしい?

qiitaの過去記事を見てみるとhttpとなっているものへアクセスしているものも見られた。

httpsを指定した場合はリダイレクトしてないけど、将来的にドメイン変わる可能性とかも考慮して、githubのREADMEにはそう書いてあるんだろうか。

ローカルにインストール不要なのはいいかなと思う。giboみたいにローカルでリポジトリを持つ必要性もないので、不要なファイルを持たなくてもいいのは良いかも。


参考資料

qiitaの記事を読んで、書いてみようという気持ちになったので、偉大な先人の皆様に感謝しています。


未検証

さっきググったら、こんなのも見つけたって話。


終わりに

メモ書き程度ですが、両方について書いているものが少なかったので書いてみた。

どうしてgitignore.ioにcurlコマンド使ったときにリダイレクトが必要なのはなぜか、とか考える機会にもなり、curlコマンドに関しての知見を良い機会にもなった。

初投稿終わり。


最近思うこと

giboで以前は入れていたが、最近はGithubならデフォルトで使用する言語を選んで作ってしまうので、コマンド自体をあまり使わないようになってきた感じがする。

それとWebページで gitignore.io を調べて、必要そうなものをコピペしてカスタマイズ… みたいなことをやるようになった。

そもそもよく使う言語と開発環境は、自分の環境であればglobalの .gitignore に入れてしまうとか、それをチームで共有しとくとかの解決になりそう。

なので、インストールするのってどうなんだろうなという気持ちになりつつある。