95
97

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

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

Last updated at Posted at 2017-08-05

.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

gitignore_io_-_Create_Useful__gitignore_Files_For_Your_Project.png

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

  • githubのリポジトリにも書いてあるけど、curl -L -s https://www.toptal.com/developers/gitignore/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://www.toptal.com/developers/gitignore/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みたいにローカルでリポジトリを持つ必要性もないので、不要なファイルを持たなくてもいいのは良いかも。

追記 (2021/01/10)

久々に見たら gitignore.io の URL が変わっていたため、再度同じように試した。やはりリダイレクトされている。

❯ curl -L --max-redirs 1 -D - https://www.gitignore.io/api/java
HTTP/2 301
date: Sun, 10 Jan 2021 07:40:19 GMT
cache-control: max-age=3600
expires: Sun, 10 Jan 2021 08:40:19 GMT
location: https://www.toptal.com/developers/gitignore/api/java
cf-request-id: 078cd634da0000ef811d2d9000000001
expect-ct: max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"
report-to: {"endpoints":[{"url":"https:\/\/a.nel.cloudflare.com\/report?s=8WUhUSuwuzB8izfeql2zTYx47xgFipxF1gO2AOt2SRozdx%2BJOPGS%2BudjhuNtGC1imIF24X9KyPYWuc6pg0XmZ75%2FQndmW0kBjzJV7k4PiQdE"}],"group":"cf-nel","max_age":604800}
nel: {"report_to":"cf-nel","max_age":604800}
server: cloudflare
cf-ray: 60f4bfce2f3aef81-NRT

HTTP/2 200
date: Sun, 10 Jan 2021 07:40:19 GMT
content-type: text/plain; charset=utf-8
content-length: 491
set-cookie: __cfduid=da6e1777494ac5203c3fc40c4500e954b1610264419; expires=Tue, 09-Feb-21 07:40:19 GMT; path=/; domain=.toptal.com; HttpOnly; SameSite=Lax; Secure
referrer-policy: strict-origin-when-cross-origin
x-content-type-options: nosniff
x-frame-options: SAMEORIGIN
x-xss-protection: 1; mode=block
strict-transport-security: max-age=31536000
via: 1.1 google
cf-cache-status: DYNAMIC
cf-request-id: 078cd6353e0000f903009cd000000001
expect-ct: max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"
server: cloudflare
cf-ray: 60f4bfcec997f903-NRT

参考資料

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

未検証

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

終わりに

メモ書き程度ですが、両方について書いているものが少なかったので書いてみた。
どうしてgitignore.ioにcurlコマンド使ったときにリダイレクトが必要なのはなぜか、とか考える機会にもなり、curlコマンドに関しての知見を良い機会にもなった。

初投稿終わり。

最近思うこと

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

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

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

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

95
97
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
95
97

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?