git sparse-checkout を活用して、/qmk_firmware/keyboards/内の使わないキーボードを抹消する
git hub を使い慣れていない自キユーザー向け
見返したときに5行で思い出せる概要
git sparse-checkout set --no-cone /* !keyboard/*/git sparse-checkout add keyboards/【キーボード名】/で登録 or 設定ファイルを直接編集- 生成ファイルは /.git/info/sparse-checkout に在り
git sparse-checkout reapplyで再適用
どんな人がターゲット?
qmk_firmwareには興味がある。だけどgit にはあまり詳しくない。雰囲気でgit pullしているという方。
最初の5行で大体何が書いてあるか理解できたという方は、以下の文章は読まなくても大丈夫です。
また、windows環境で実行していますが、MACやLinuxの方もおそらく同じ手順で同様のことができると思います。 まだ一度もローカルの変更をコミットしたことがない、 pull?push?なにそれ怖いという方はTakeshi ISHII様のこちらの記事を参考にしてみてください。
git に対する苦手意識が少しだけ軽くなると思います。
本題
さて、私は自宅では設計段階の自作キーボードSweetGrapse(以下 SW)を、出先ではcorne chocolate を使用しています。
その関係で、corneのキーマップに対して行った変更を SWにも適用したいという場面が度々あり、 コードエディタでcorneとSWの欄を行ったり来たりしていました。
この時間は無駄なので使わないキーボードのキーマップファイルをリモートから読み込まないようにしてみます。
これを
こうする。
今回はgit sparse-checkout というコマンドを使用します。
これは、リポジトリの中から設定されたディレクトリのみをローカル環境に構築することができるコマンドです。
gitをまだインストールしていないという方は公式サイトからダウンロードしてください。
sparse-checkout を利用するには
qmk_firmware/ に cd で移動した後
git sparse-checkout set --no-cone /* !keyboard/*/
を実行します。 windowsの場合 コマンドラインツールはqmk msysか git bashがおすすめ。
このコマンドによって
/qmk_firmware/.git/info/ に
sparse-checkout というファイルが生成されます。
中身はこんな感じ。
/* !keyboards/*/
--no-cone以降に入力した文字が並んでますね。
--no-coneオプションを指定するとブラックリスト形式でファイルを指定できます。
同様に--coneはホワイトリスト形式です。
/keyboardsフォルダ以外は必要なファイルばかりなので、ブラックリスト形式で設定します。
現状、/keyboards以下は何も読み込まれていないので、 次は必要なキーボードのデータを読み込んでいきましょう。
今度はsetではなく、addオプションを使います。
git sparse-checkout add keyboards/【キーボード名】/
で追加していくだけです。
git sparse-checkout add keyboards/crkbd/ git sparse-checkout add keyboards/dailycraft/ git sparse-checkout add keyboards/trp3l/
現在適用されているspase-checkoutの設定は
git sparse-checkout list
と入力することで見ることができます。
また、qmk_firmware/.git/info/sparse-checkout に生成された設定ファイルを見ても同様に確認できます。
/* !keyboards/*/ keyboards/dailycraft/ keyboards/crkbd/ keyboards/trp3l/
私の場合はこんな感じになっていました。
設定ファイルに手作業で文字を追加したあと、
git sparse-checkout reapply
としても同様のことができるので、cliでうまくいかない場合は試してみてください。
コマンドを忘れたときは
git sparse-checkout -h
と入力することで、ヘルプを一覧することもできます。
解説は以上です。お疲れ様でした。
上級者向けのおまけ
非表示にしているファイルは通常、 pullを行った際 裏で自動的に更新されています。
普通にしていれば、非表示のファイルは編集しようがないので 問題ないのですが、 別の方のリポジトリをpullしたときなどに、 稀にqmk公式とそのリポジトリとでコンフリクトを起こしてしまうことがあります。
この場合、編集できないのにコンフリクトを解消しろ!となり、八方塞がりです。
そういった場合は、
git sparse-checkout disable
で 一旦sparse-checkoutをoffにして、 すべてのキーボードを再表示した後コンフリクトを解消し、
git sparse-checkout reapply
でもう一度sparse-checkoutを適用することでうまくいきます。
改稿履歴
- 2021/12 初版
- 2021/12 軽微な修正
- 2026/01 現在の環境に合わせて最適化
参考にしたサイト
- Git公式 | Git - git-sparse-checkout Documentation
- konweb様 | 【Git】基本コマンド
- カック様 | モノリポ時代に知っておくと便利な「gitsparse-checkout」
- 晴栄リコ様 | Git sparse-checkoutを試してみる
- kenzauros様 | git sparse-checkoutを無効にするには