コミット履歴を保ったままブランチを統合する
ブランチ整理のために。過去のコミット履歴をなかったことにしたくなかった。
下記の記事が神。
# 新規リポジトリを作成 mkdir new_repository cd new_repository git init # リポジトリを統合 git remote add ${repositoryName} ~/Desktop/${repositoryName} git fetch ${repositoryName} git read-tree --prefix=${repositoryName} ${repositoryName}/master git checkout -- . git add . git merge -s subtree ${repositoryName}/master --allow-unrelated-histories
2020年に作ったリポジトリ一覧を出す
GithubのAPIを使って出した。APIのパラメータで日時を指定して取得することができなかったので、jqのselect文で2020-01-01
~2020-12-31
でフィルタして取得することに。
jqのパイプで@tsv
として出力する方法は知らなかった。
#!/usr/bin/env bash TOKEN=XXXXXXXXXXXXXX USERNAME=YYYYYYYYY main() { # ページネーションの最後の番号を取得 local last=$(curl -sI -H "Authorization: token ${TOKEN}" "https://api.github.com/user/repos?per_page=100&page=1" \ | tr "," "\n" \ | grep 'last' \ | grep -oP "(?<=&page\=).*(?=\>)" ) # tsvで出力する用のヘッダー echo "name private language url created_at updated_at" # 一度に100件までしか取得できないので、ページネーション分回す for page in $(seq 1 $last); do curl -s -H "Authorization: token ${TOKEN}" "https://api.github.com/user/repos?per_page=100&page=${page}" \ | jq '.[] | select(.owner.login == "'${USERNAME}'") | select("2020-01-01" <= .created_at and .created_at <= "2020-12-31") ' done | jq -r --slurp 'sort_by(.created_at) | .[] | [.name, .private, .language, .html_url, .created_at, .updated_at] | @tsv' } main
上記をgit.sh
として保存して実行する。
$ sh git.sh name private language url created_at updated_at get-twitter-from-qiita false JavaScript https://github.com/Rasukarusan/get-twitter-from-qiita 2020-01-07T12:31:26Z 2021-01-01T08:44:55Z react-tutorial true JavaScript https://github.com/Rasukarusan/react-tutorial 2020-01-09T00:04:29Z 2020-01-12T07:29:49Z react-search-author false JavaScript https://github.com/Rasukarusan/react-search-author 2020-01-13T00:42:50Z 2020-02-09T01:16:00Z
出力をNotionに貼り付けるといい感じの表が作成される。
スター数が多い順にリポジトリを出力する関数も書いた。
stars() { local last=$(curl -sI -H "Authorization: token ${TOKEN}" "https://api.github.com/user/repos?per_page=100&page=1" \ | tr "," "\n" \ | grep 'last' \ | grep -oP "(?<=&page\=).*(?=\>)" ) echo "name stargazers_count language url created_at updated_at" for page in $(seq 1 $last); do curl -s -H "Authorization: token ${TOKEN}" "https://api.github.com/user/repos?per_page=100&page=${page}" \ | jq '.[] | select(.owner.login == "'${USERNAME}'") | select(.stargazers_count > 0) ' done | jq -r --slurp 'sort_by(.stargazers_count) | reverse | .[] | [.name, .stargazers_count, .language, .html_url, .created_at, .updated_at] | @tsv' }
終わりに
改めて思うけどgitコマンド色んな機能ありすぎてすごい。