0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Git】Qiita CLIを使う

Last updated at Posted at 2024-10-16

はじめに

こんにちは、10/6から毎日投稿(時差があるため若干ずれているものもあります)してます。
アウトプットする内容がなくならないように、インプットも頑張ります。
最近Qittaでブログを投稿するようになり、投稿のボタンを押すたびに「Githubで記事を管理する」が目に入っていたのでGitの基礎を学んだら使ってみようと思いました。
そこで今回はすでにQiita CLIを使っている方やこれから使う方に向けて、いろいろ書いていこうと思います。

環境:
OS:windows 11
Terminal:Gitbash
Node.js -v 20.18.0

Qiita CLIとは

Qiita CLIを使うと以下のことができます。

  • CLI操作でQiitaの投稿を自分の指定したディレクトリに保存することができる
  • CLI上で記事の投稿ができる(削除はできない)
    という感じです。
    つまり、Qiitaを一種のリモートデポジトリのように扱える機能っていえばいいんですかね、?
    詳しいQiita CLIのセット方法はこちらから

Qiita CLIを使用するメリット

私の思うメリットは以下の通りです

  • 記事の作成をオフライン上でできる
  • CLIのほうが操作が楽
  • カレントディレクトリに保存できるようになるため、GitHubのデポジトリに記事を保存できる
  • Gitの練習になる(未経験の方向け)
  • GitHubの草をはやすことできる
  • CLI操作で投稿できるのなんかかっこよくないですか...?
    GitHubの`contributeをすると緑色がつくので草をはやすというらしいです。
    こんなにメリットがあるので試すほかありませんよね?

Qiita CLIを使用する上で知っておいた方がいいこと

これについては知らなかったというか、操作しながら学んだので共有したいと思います。
結論から書いておくと、ファイル名を変える場合は.remoteファイルの中をまったくいじらないでおきましょう。
npx qiita publish ファイル名を実行した際に、.remoteファイルの更新をするのですが、もとのファイル名でないと、変更したファイル+煩わしい名前のファイルが保存されるよくわからない状態になります。
.remoteは放置と覚えておきましょうw

そんなこと知ってるよ!って方はスルーで大丈夫ですが、煩わしくよくわからないファイル名を変えるシェルスクリプトも載せているのでよかったら見てください。

npx qiita new ファイル名で投稿する記事のファイルを作成することができます
例えば

npx qiita new article1
# カレントディレクトリ内にarticle1.mdが作成される

という感じです。
上記のQiita CLIREADMEを作成しながら進めると、投稿したファイルをカレントディレクトリに以下のように作成します。
すでに投稿しているファイルが2つの場合こんな感じで作成されます。

public--
       |_.remote
       |_rejkjflkajlkdfja.md
       |_djfalkjflkajdflk.md

ここで.remoteについて、いくつか注意点がありますが隠しファイルなので触らないと覚えておきましょう。
ここで、私はファイル名が長すぎて嫌だったので投稿順にarticle1.mdのように名前を付けようと考えました。

ここで正直に言うとchatgptの力を借りて、以下のシェルスクリプトを作成し名前を変更しました。(ここ以降の話はLinux知らないときついかも...)
同じ共有の方もいると思うので参考にしてもらえれば幸いです。

rename_md_files.sh
#!/bin/bash

# 1. 日付をファイルから取得して、ファイル名と共に保存
declare -A file_dates

for file in *.md; do
    # 正確な 'updated_at' 行を取得
    date=$(grep "^updated_at: " "$file" | sed -E "s/updated_at: '(.*)T.*'/\1/")
    
    if [ -n "$date" ]; then
        file_dates["$file"]="$date"
        echo "Found date $date in file $file"
    else
        echo "No date found in file $file"
    fi
done

# 2. 日付順にソートしてリネーム
count=1
for file in $(for key in "${!file_dates[@]}"; do echo "${file_dates[$key]} $key"; done | sort | awk '{print $2}'); do
    echo "Renaming $file to article$count.md"
    mv "$file" "article$count.md"
    count=$((count + 1))
done

echo "ファイルが順番にリネームされました。"

rename_md_files.shをカレントディレクトリに保存して、以下のコマンドを実行します

$ ./rename_md_files.sh
# 実行権がありません的なのが出てくる
$ chmod a+x ./rename_md_files.sh
$ ls -l
# rwxr-xr-x ....と記載がある。xは実行権を付与したという意味
$ ./rename_md_files.sh

これで名前が変わっているはずなので試してみてください。
Bashを使えばいきなり実行できますが、誤って操作をしてしまうリスクがあると習ったので勉強のためchmodを用いて実行します。
という感じでファイル名も変えて、.remoteを放置すればあとはgitを使って自分のGitHubpushするだけです。
ちなみに、GitHubに載せる際にrename_md_files.shを載せたくない方はgitignoreに記載を忘れずに。

私のようなプログラミングスクールに行かず独学の人にとって、gitを触るいい機会だと思います。
私の場合は、branchを作成してpull requestやもう一つアカウントを作ってコメントmergeなど勉強していますw

0
1
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
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?