それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

gitignroeの除外まとめ2〜指定ディレクトリのみ有効化 - 除外の無視で特定フォルダを管理下に

指定したフォルダだけをgit対象にしたいことありませんか?

10個あるファイルのうち1ファイルだけをgit対象にし、残り9ファイルを無視したい。

私であれば ln -sシンボリックリンクを使うのですが、世の中にはシンボリックリンクを使えない不幸な人達と環境があるのです。wordpress のみが動くレンサバにFTPアクセスをしている場合とか。

オススメは ~/.configのgit管理

全部除外して、必要なものだけをいれる。

# ignore all
*
# ## but exclude thees files
!rclone
!rclone/*
!nvim
!nvim/*

ディレクトリの指定とファイルの指定を2重に書いてるのはgitの空フォルダの仕様と、フォルダと無視の取扱にある。

だめな例

*
!rclone/

フォルダだけ対象にすると rclone/は入るけど、中のファイルは先頭の * にマッチして無視される。

そしてgitには空フォルダに見える。gitは空フォルダを無視するので、結果として除外の無視を書いた結果でも

このために、フォルダの中身も無視除外と書く必要があるわけ。

この辺が分からず、サブディレクトリの無視の除外設定に手間取る人が多い様に思った。とくにQootaとか見てると。

gitignore の無視ファイルで無視したい

ワードプレスを例に説明します。

wordpress の直下のファイルで wp-content / wp-config だけを対象にしたい。

f:id:takuya_1st:20180305172803p:plain

gitignore で指定ファイルだけを管理下に置く(ignoreの除外)を使う

最初に、全部除外して、必要なファイルだけを git に入れます。

## 全部除外する
*
####################
## 必要なものだけをいれる
!wp-config.php
!wp-content/
!wp-content/*

サブディレクトリのサブディレクトリだけを入れたいときは?

再帰的にフォルダ内部を最下層まで除外に含めるときは、次のようにbash見たいなワイルドカードを書いてあげると上手く当たる。

## 全部除外する
*
####################
## 必要なものだけをいれる
!wp-config.php
!wp-content/
!wp-content/*
!wp-content/thmes/**

これで、好きな場所をgit 管理して、好きなようにフォルダをgit push して楽ができるよ。

man 読んだら書いてた

 A trailing "/**" matches everything inside. 
For example, "abc/**" matches all files inside directory "abc", relative to the location of ...(..)

参考資料

  • man gitignore

gitignore は man に記述在るので楽だよね*1

ignore and commit に関係する商品

*1:ポエム書く前に man 読んでほしいけど、man よむよりググちゃうんだろうな。