git

flowchart BT
    subgraph ローカル環境
    subgraph remoteBranch["リモート追跡ブランチ"]
  origin/hoge
    upstream/hoge
    
    end
        subgraph localRepo ["ワーキングディレクトリ"]
        
        end
        subgraph index["インデックス (ステージング)"]

        ローカルブランチ
        end
    subgraph alias["リモートリポジトリエイリアス"]
    origin
    upstream
end
    end


    subgraph Github
    リモートリポジトリ
    end

localRepo <-->|add,commit| index <---|merge,rebase| remoteBranch
alias<-->|fetch,push,pull|Github 
origin/hoge --->|push| origin
upstream/hoge <---|fetch| upstream

一番最初だけ

git init

接続先の設定(他リポジトリに付け直すは.gitを削除する)

git remote add origin "push先のアドレス"

設定確認

git remote -v

アップロードするファイルの指定

git add -A #全ファイル git add ”ファイル名”

変更点のメッセージ

git commit # vim的なので編集 git commit -m “メッセージ”

初回プッシュ ※-u: --set-upstream トラッキング設定(コミットの差分管理)

git push -u origin master

ローカルリポジトリのリセット

.gitファイルを削除 →再度git init

ブランチの作成

git branch  ”ブランチ名”

ブランチ一覧の確認

git branch  

選択的にトラッキング設定(リモートリポジトリのhoge-branchにトラッキング設定)

git branch -u origin/hoge-branch

ブランチのポインタを強制的に変更(HEAD位置から2つ前に)

git branch -f "ブランチ名" HEAD^^ 

ブランチの変更  

git checkout ”ブランチ名” ※現在のブランチの変更をコミットしないとブランチ変更できない

リモートリポジトリのブランチにPush ※origin:リモートリポジトリのエイリアス

git push origin ”ブランチ名”

※サーバーの状況によりエラーになる可能性が有る→時間をおいて再度実行

ラッキングしているローカルブランチとリモートブランチ間でコミットの差分を確認

git status -vv

ログを簡潔に表示

git log --oneline

ブランチのトラッキング状態を確認する

git branch -vv

ブランチを現在のブランチにマージする(Fast-Forward)

git merge ”ブランチ名”

常にマージコミットを残す

git merge --no-ff

指定ブランチの先にコミットを新規に作り足す(マージコミットは残らない)

git rebase "ブランチ名"

ローカルブランチを削除

git branch -d ”ブランチ名”

リモートブランチを削除

git push --delete origin ”ブランチ名”

リモートリポジトリを別リポジトリへ変更

git remote set-url origin "別リポジトリのURL"

 #複数アカウントの競合などで403エラー(アクセス権で弾かれる)場合

git config --global user.name "Your Name"

git config --global user.email you@example.com

git remote set-url origin https://<ユーザ名>@github.com/<ユーザ名>/<リポジトリ名>.git

//参考URL

https://hacknote.jp/archives/54105/

変更内容を退避 ※-uオプションで新規作成のファイルも退避

git stash -u

特定のファイルだけ退避

git stash push -- ./filepath

退避内容に名前をつける

git stash -m "my-stash" git stash push ./hoge -m 'hoge'

退避した変更内容のリスト

git stash list

退避した変更内容を適用

git stash apply stash@{num}

退避した変更内容を削除

git stash drop stash@{num}

最新のstashを適用してリストから削除

git stash pop

インデックス変更前の変更をリセットして元に戻す

git checkout HEAD .

git clone フォルダ名

pushされたリポジトリをダウンロードして確認できる

指定したブランチをクローンする

git clone -b ブランチ名 https://リポジトリのアドレス

コミットIDのみ表示

git log --pretty=oneline | awk '{print $1}'

--pretty=format:”%h”

HEADは常に一つ、現在の最新のコミットを指す

リポジトリ内の操作ログを調べる

git reflog

直前の状態に戻す

git reset --hard HEAD^

操作ログの状態に戻す

git reset --hard (hash) ※hashはgit reflogで調べる

コミットのみ直前の状態に戻す(作業状況は変わらない)

git reset --soft HEAD^

^(ハット)に引数を渡すとマージの親を選択できる

2番目のマージの親へ参照を移動

git checkout HEAD2

コミットを2つ前まで戻す(リモートリポジトリには反映されない)

git reset HEAD~2

2つ前の状態のコミットを新たに追加

git revert HEAD~2

HEADから特定のコミットまでのコミット数をカウント

git rev-list --count HEAD ^(コミットのハッシュ)

4つ前までのコミットをインタラクティブ(抽出、順番入れ替え)に操作

git rebase -i HEAD~4

任意のコミットを現在のブランチに追加

git cherry-pick ...(references)

直近のコミットを修正

git commit --amend

コミットにタグを登録

git tag tagname reference(省略可能)

直近のタグ、タグからのコミット数、最新コミットのハッシュを取得

git describe reference

rebaseでツリーを統合

git fetch --rebase

ブランチをリモートブランチへの追跡を設定して作成

git checkout -b hogebranch origin/main

origin(リモートブランチ)のに現在のチェックアウトのコミットをpush

git push origin

sourceの参照(Refspec)へdestinationを移動

git push origin :

git bisect

git branch -u o/main foo

//参考URL

https://qiita.com/wann/items/688bc17460a457104d7d

https://www.r-staffing.co.jp/engineer/entry/20200605_1  

コミットの情報確認

特定ファイルに関するコミットのみ表示

git log -- filePath

省略して表示

git log --pretty=oneline --abbrev-commit

コミットのメッセージのみ表示

git log --pretty=oneline --abbrev-commit | awk '{print $2}'

特定コミットの内容を表示

git show commitID --name-only

複数アカウントでの使い分け(公開鍵の使い分け)

~/.ssh/configに設定(※windows C:\Users\hp/.ssh/id_rsa)

Host github.sub #任意のホスト名HostName github.com IdentityFile ~/.ssh/id_sub_rsa #サブアカウントの鍵のファイルUser git Port 22 TCPKeepAlive yes IdentitiesOnly yes

上記の設定の公開鍵を使う場合、clone時には下記ホスト名を指定

git clone git@github.sub:username/hoge.git 

pull/pushも種々個別に指定する必要がある(デフォルトはgithub.com)

下記でリモートリポジトリのURLを設定しなおす

git remote set-url git@github.sub:username/hoge.git 

git push 

git config --global/--localでユーザー情報を設定

user.name

user.email

//参考URL

https://zenn.dev/taichifukumoto/articles/how-to-use-multiple-github-accounts

プルリクエストをローカルリポジトリにマージする

git remote add upstream git@github.ak-mugichans:ak-mugichans/PRtest.git

git checkout PRのブランチ

git fetch upstream

git checkout master

git merge upstream/<プルリクエストのブランチ>

特定のコミットIDをclone

git init git add remote origin hoge git fetch --depth 1 origin hogeSHA

//参考URL

https://mebee.info/2021/05/09/post-33725/

コミットを整理

git rebase -i HEAD~n
pick 005667b log1を作成
pick cf4487a log_2を作成
pick 651562b log_3を作成
pick 0ab1b17 log_1を修正
pick 7153c7c log1,2を修正
pick 7160b49 log3のみを修正

edit:コミット直後へ移動
reward:コミットメッセージのみ修正
squash:コミットを統合

#コミット内容に追加する
git add

#コミット内容を分割する
git reset @^
git add 
git commit

前回のコミットに追加

git commit --amend

//学習サイト

https://learngitbranching.js.org/?locale=ja

ffmpeg 音声ファイルに黒背景をつけて動画として書き出し

FILE_NAME="inputfile.m4a" && ffmpeg -f lavfi -i color=c=black:s=480x360:d=10 -i ${inputfile} -c:v libx264 -c:a aac -strict experimental -t "$(ffprobe -i ${inputfile} -show_entries format=duration -v quiet -of csv='p=0')" $(echo $inputfile | tr -d '.m4a').mp4

-show_entries stream=width,height:format=duration:表示するエントリを指定。この場合、幅(width)、高さ(height)、およびフォーマットの長さ(duration)を指定
-v quiet:バックグラウンドで処理
-of csv=p=0:出力形式をCSV形式に指定,p=0により出力のカラム(列)間に余分なスペースを含めない

BIMモデルを利用したLPを作ってみる② styled-components導入編

単純にstyled-componentsを'edgesout' とエラーが出たのでLTSバージョンをインストール

 npm i -D styled-components@5.3.10

Typescript用の型定義もインポート

npm i -D @types/styled-components@5.1.26

BIMモデルを利用したLPを作ってみる① Next.js + Storybook + Cloudflare編

プロジェクト作成

next バージョン 13.4.2 storybook バージョン 7.0.11

npx create-next-app@latest --ts
npm i sb@latest type nextjs
npm sb init
Storybookのサンプル内のエラー修正

eslintで警告されたエスケープ処理を修正

&quot;args&quot; of child component stories

最近のNext.jsではデフォルトでサーバーサイドレンダリングの設定なので, クライアントレンダリングの設定を明記

"use client"

Cloudflareでデプロイする際の設定

Cloudflareに環境変数を追加
NODE_VERSION  18.7.0(12.22.0以上であれば良いとのことだが今回は開発環境に合わせた)
next.config.js修正

App Routerではnext exportは使えないのでoutput:'export'を指定

/** @type {import('next').NextConfig} */
const nextConfig = {
  output: 'export',
}

module.exports = nextConfig

yabai&skhd設定

# focus window
alt - x : yabai -m window --focus recent
alt - h : yabai -m window --focus west
alt - j : yabai -m window --focus south
alt - k : yabai -m window --focus north
alt - l : yabai -m window --focus east
# swap window
shift + alt - x : yabai -m window --swap recent
shift + alt - h : yabai -m window --swap west
shift + alt - j : yabai -m window --swap south
shift + alt - k : yabai -m window --swap north
shift + alt - l : yabai -m window --swap east
# move window
shift + cmd - h : yabai -m window --warp west
shift + cmd - j : yabai -m window --warp south
shift + cmd - k : yabai -m window --warp north
shift + cmd - l : yabai -m window --warp east
# move window
shift + ctrl - a : yabai -m window --move rel:-20:0
shift + ctrl - s : yabai -m window --move rel:0:20
shift + ctrl - w : yabai -m window --move rel:0:-20
shift + ctrl - d : yabai -m window --move rel:20:0
# increase window size
shift + alt - a : yabai -m window --resize left:-20:0
shift + alt - s : yabai -m window --resize bottom:0:20
shift + alt - w : yabai -m window --resize top:0:-20
shift + alt - d : yabai -m window --resize right:20:0
# decrease window size
shift + cmd - a : yabai -m window --resize left:20:0
shift + cmd - s : yabai -m window --resize bottom:0:-20
shift + cmd - w : yabai -m window --resize top:0:20
shift + cmd - d : yabai -m window --resize right:-20:0
# rotate tree
alt - r : yabai -m space --rotate 90
# mirror tree y-axis
alt - y : yabai -m space --mirror y-axis
# mirror tree x-axis
alt - x : yabai -m space --mirror x-axis
# toggle desktop offset
alt - a : yabai -m space --toggle padding && yabai -m space --toggle gap
# toggle window fullscreen zoom
alt - f : yabai -m window --toggle zoom-fullscreen
# toggle window native fullscreen
shift + alt - f : yabai -m window --toggle native-fullscreen
# toggle window split type
alt - e : yabai -m window --toggle split
# float / unfloat window and restore position
# alt - t : yabai -m window --toggle float && /tmp/yabai-restore/$(yabai -m query --windows --window | jq -re '.id').restore 2>/dev/null || true
alt - t : yabai -m window --toggle float && yabai -m window --grid 4:4:1:1:2:2

javascript chromeでの並行ダウンロード制限(10まで)以上のダウンロード

const link = document.createElement('a');
document.body.appendChild(link);

//Promiseを返却して処理を止める
function pause() {
    return new Promise(
        (resolve, reject) => {
            setTimeout(resolve,  1000);
        }
    );
}

const files = [
"file1",
"file2",
"file3",
"file4",
"file5",
"file6",
"file7",
"file8",
"file9",
"file10",
"file11",
"file12",
"file13",
]

async function downloadAll(elements) {
    var count = 0;
    for (var file in files) {

        link.download = `${file}.txt`;
        link.href = URL.createObjectURL(link);
        link.click();
        URL.revokeObjectURL(link.href)



        if (++count >= 10) {
            await pause(1000);
            count = 0;
        }
    }

//参考URL
https://stackoverflow.com/questions/53560991/automatic-file-downloads-limited-to-10-files-on-chrome-browser