2022-10-12



以前こちらの記事にて、gitの操作とGitHubへの登録、管理、ブログでのコード引用をgist-itで行うメモを書いた。
これはGitHubリポジトリ内のソースファイルをブログにそのまま貼り付ける方法は存在しないため、外部ツールgist-itを介した訳だが、一応Gistでもコマンドラインで複数ファイルを一括バージョン管理しつつ、貼り付けるファイルを指定可能である。
Gistであればブログにコードをそのまま貼れるので、gist-itを介す必要がなくなる。ただしディレクトリを登録することはできない&名前でなく16進ハッシュ文字列がIDという弱点はある。これらを許容できるなら、cloneした後の編集はgitでそのまま行えるので便利である。
1、GitHub SSH keyにgist.github.comを追加する
GitHubへsshを介してリポジトリ操作をするため、SSH公開鍵の登録を済ませておく。.ssh/configの設定はgithub.comであったが、これにgist.github.comの設定も追加しておく。
Host github.com IdentityFile ~/.ssh/id_rsa.git #秘密鍵がid_rsa.gitで保存している場合 Host gist.github.com IdentityFile ~/.ssh/id_rsa.git #同様に追加する
2、GitHub Personal access tokenを作成する
GitHubにてSettings -> Developer settings -> Personal access tokens にて、新規トークンを作成する。
gistの操作をするだけなら、チェックはgist (Create gists) だけでよい。
作成が成功すると、16進文字列のトークンが発行されるので、これをホームディレクトリの以下設定ファイルに記述する。
$HOME/.config/gist
[gist] token: 取得した Personal access token文字列 editor: /usr/bin/vi
3、gistコマンドのインストール
Python版を使う。Pythonのインストールはこちら。
pip3.8 install python-gist これでgistコマンドが使えるようになる。 gist help Usage: gist list gist edit <id> gist description <id> <desc> gist info <id> gist fork <id> gist files <id> gist delete <ids> ... gist archive <id> gist content <id> [<filename>] [--decrypt] gist create <desc> [--public] [--encrypt] [FILES ...] gist create <desc> [--public] [--encrypt] [--filename <filename>] gist clone <id> [<name>] gist version
4、新規Gistファイルを作成する
2、のアクセストークン設定がちゃんとできていれば、新規作成が可能なはずである。
まずは最初のファイルを作成する。例としてここではあらかじめsample1.cを作成しておく。
sample1.c
#include <stdio.h> #include <stdlib.h> #include <string.h> int main(void){ printf("さんぷる1です\n"); return 0; }
これを最初の登録ファイルとして、新規公開用Gistを作成する。gistの名前はsampleとした。
gist create "sample" --public sample1.c https://gist.github.com/fc969515e3ec6cf8d6dc52e1fc42211e
16進のIDが発行され、作成された。
5、一覧と中身を確認する
現在の一覧確認
gist list fc969515e3ec6cf8d6dc52e1fc42211e + sample
指定IDのGistの中身を確認
gist content fc969515e3ec6cf8d6dc52e1fc42211e sample1.c: #include <stdio.h> #include <stdlib.h> #include <string.h> int main(void){ printf("さんぷる1です\n"); return 0; }
ちゃんと登録されていることがわかる。削除する場合、
git delete fc969515e3ec6cf8d6dc52e1fc42211e
とする。なお、1つのGistに複数の管理ファイルを登録している場合、それも含めてすべて削除されるので注意。
6、クローンして、以降はgitコマンドで操作する
ここからが今回のカナメで、1、でgist.github.comへのSSH秘密鍵、公開鍵が正しく設定されていれば、上記gistをcloneして、以降gitで操作できてしまう。
sampleという名前で取り出す。
gist clone fc969515e3ec6cf8d6dc52e1fc42211e sample Cloning into 'sample1'... remote: Enumerating objects: 3, done. remote: Counting objects: 100% (3/3), done. remote: Compressing objects: 100% (2/2), done. Receiving objects: 100% (3/3), done. remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 0 ls -alF sample .git sample1.c
カレントにsampleというディレクトリができて、その中に.gitとsample1.cがあるはずである。うまくcloneできなかった場合、SSH鍵の設定等を見直してみる。
ここまでくればもうしめたもの、あとは【ソースコード管理】Git/Hub/Lab/Gist-Itの記事のとおり、gitコマンドでファイル/ディレクトリadd、status、commit、pushをすることができる。
ただしディレクトリ登録はできないので、Androidプロジェクト一式を管理などする場合はGitHub+gist-itの選択肢くらいしかないのは変わらない。
ためしに、sample2.cを作成し、add、commit、pushしてみる。
sample2.c
#include
#include
#include
int main(void){
printf("さんぷる2です\n");
return 0;
}
ここからはgistでなくgitコマンド。
git add sample2.c git status git commit -m "add sample2.c" git push -u origin master Delta compression using up to 2 threads. Compressing objects: 100% (4/4), done. Writing objects: 100% (5/5), 524 bytes | 0 bytes/s, done. Total 5 (delta 0), reused 0 (delta 0) To gist.github.com:/fc969515e3ec6cf8d6dc52e1fc42211e e7ca6e6..34c5c73 master -> master Branch master set up to track remote branch master from origin.
無事成功。ここで、あらためてgistコマンドで上記の反映を確認してみる。
gist files fc969515e3ec6cf8d6dc52e1fc42211e sample1.c sample2.c # 追加されている。 gist content fc969515e3ec6cf8d6dc52e1fc42211e sample1.c: #include <stdio.h> #include <stdlib.h> #include <string.h> int main(void){ printf("さんぷる1です\n"); return 0; } sample2.c: #include <stdio.h> #include <stdlib.h> #include <string.h> int main(void){ printf("さんぷる2です\n"); return 0; }
7、ブログに貼り付けて公開する
GitHubのGUIページでも確認できるが、現在以下URLにID値を差し替えて貼り付ける。
<script src="https://gist.github.com/{GitHub ID}/{gist id}.js"></script>
複数ファイルを指定していて、公開ファイルを指定する場合は以下のようにする。
<script src="https://gist.github.com/{GitHub ID}/{gist id}.js?file={filename}"></script>
今回の例では、
<script src="https://gist.github.com/servernote/fc969515e3ec6cf8d6dc52e1fc42211e.js"></script>
で、以下のようにsample1.c、sample2.cのすべてが表示され、
<script src="https://gist.github.com/servernote/fc969515e3ec6cf8d6dc52e1fc42211e.js?file=sample2.c"></script>
で、以下のようにsample2.cだけが表示される。便利!
見栄えの変更はCSSである程度可能。当サイトでは以下のように設定している。
.gist * { font-size: 14px !important; /* フォントサイズ */ line-height: 1.0rem !important; /* 行間 */ } .gist tr:first-child td { padding-top: 10px !important; /* 上余白 */ } .gist tr:last-child td { padding-bottom: 10px !important; /* 下余白 */ } .blob-num { display: none; /* 行番号なし */ }
行番号は表示したいが、ありにすると番号と本体との間にスペース8個も入れられてしまい、これを変更する方法が見つからなかったので、やむなく非表示にしている…。

※本記事内容の無断転載を禁じます。

SNSで大人気!インテリア雑貨ブランド【sarasa design】

一人暮らし向けおしゃれインテリア家具通販サイト【6JOHAN】

開通後「最短2ヵ月」で必ずキャッシュバックが貰える!ドコモ光

「開き・黒ずみ・角栓」三大毛穴悩みの為の美容液【ソワン】

漢の肌荒れ・髭剃りケアに5つの発酵菌ケア【オイズPBジェル】

利用制限なし!シンガポール専用 Wi-Fiルーターなら安定感抜群!【シンガポールデータ】

お好きなプランから選べる全国対応のファクタリングサービス【いーばんく】

ここのあんこは、生きている。【餡が自慢の大阪の和菓子屋 福壽堂秀信オンラインショップ】

顧客満足度No.1 到着スピードNo.1 価格満足度No.1の【害獣駆除110番】

window.etereum.requestに渡すdataフィールドをABIエンコードで作成する
【Solidity】Remix IDEを使用してサーバー不要のコントラクト開発&デバッグ【Ethereum】
【Windows】Googleフォトからダウンロードした動画が音声のみで映像が再生されない場合
PostgreSQLをソースコードからインストールしてsystemdのサービスとして動かす
【Linux】mkfsコマンドでProceed anyway?と確認を求められるのを回避する
【Apache】www.のついたアクセスをすべてwww無しにリダイレクトする.htaccess設定
【Apache】www.なしのアクセスをすべてwww.へリダイレクトする.htaccess設定
【Apache】httpアクセスをすべてhttpsへリダイレクトする.htaccess設定
【Windows】MiniTool Partition Wizardで削除できないパーティションを消す&削除したファイルを復旧する
Windows版Google Driveが使用中と言われアンインストールできない場合
【Windows10】リモートデスクトップ間のコピー&ペーストができなくなった場合の対処法
Googleスプレッドシートを編集したら自動で更新日時を入れる
5chブラウザJane Styleの板一覧にゲーム板等が表示されない場合
Googleファミリーリンクで子供の端末の現在地がエラーで取得できない場合
【Javascript】JSON配列内にある特定要素の取得法【Node.js】
LinuxからWindowsの共有フォルダをマウントする
【Linux共通】プロキシサーバーの利用設定
【Anaconda3】指定した仮想環境でJupyter Notebookを動かす