IT技術で仕事を減らしたい!

素人ITエンジニアのメモ+α

Git よく使うコマンド一覧

どうも、nippa です。

今回は git をよく使うコマンド、便利なコマンドをまとめておきます。

細かいコマンドは git サブコマンド -hで確認できます。

環境

  • git 2.34.1

コマンド一覧

()は必須、[]はオプションを意味してます。

全般 git

コマンド 動作
git init git の初期化を行う
git status 現在の状態を表示する
git status -s 現在の状態を完結に表示する
git clone (Remote repo) リモートレポジトリの複製する
git clone -b (branch name) (Remote repo) リモートレポジトリの対象ブランチを複製する
git diff [file path] 変更の差分を確認する

git add

コマンド 動作
git add (file path or directory) 対象をステージングエリアにあげる
git add -p (file nam ) 対象ファイルを部分的にステージングエリアにあげる
git add -A すべての変更ファイルをステージングエリアにあげる

git branch

コマンド 動作
git branch ローカルブランチを表示する
git branch -a すべてのブランチを表示する
git branch -d (branch name) マージ・コミット済みのブランチを削除する
git branch -D (branch name) 強制的にブランチを削除する
git branch -m (original branch name) (new branch name) ブランチ名を変更する
git branch -M (branch name) メインブランチを指定する

最近は main が主(master という言葉が性差別にあたるとかで)

git commit

コマンド 動作
git commit -m "commit message" コミットする
git commit --amend -m "commint message" 1つ前のコミットに統合する
git commit --all -m "commit message" すべての変更をコミットする

git checkout

コマンド 動作
git checkout チェックアウトできるファイルを表示する
git checkout (commit ID) (file path) 指定したファイルを対象コミットの状態に戻す
git checkout (branch name) ブランチに変更する
git checkout -b (new branch) 現在のブランチを元に新規ブランチを作成し、そのブランチに変更する
git checkout -b (new brancj) [base branch] 対象ブランチをベースにブランチを作成し、そのブランチに変更する
git checkout -b tag (tag name) 対象タグにチェックアウトする

git fetch

コマンド 動作
git fetch [origin] リモートレポジトリの新規ブランチを動悸する。[origin]を指定しない場合は、最優先 origin が対象。
git fetch --prune [origin] リモートレポジトリのブランチを完全同期する。[origin]を指定しない場合は、最優先 origin が対象。

git log

コマンド 動作
git log ログを表示する
git log --oneline 集約したログを表示する
git log --sta 詳細ログを表示する
git log -p 1 つ前のコミットからの差分を表示する
git log -p [commit ID] 対象コミットから以前の差分を表示する

git merge

コマンド 動作
git merage (branch name) 対象ブランチを現在のブランチにマージする
git merage --squash (branch name) 対象ブランチのコミットを1つにまとめた上で現在のブランチにマージする

git push

コマンド 動作
git push origin (branch name) 登録されている origin に対象ブランチをコミットをプッシュする
git push origin (tag name) 登録されている origin に対象タグをコミットをプッシュする
git push origin --tags 登録されている origin にすべてのタグをプッシュする
git push --delete origin (tag name) 対象タグを登録されている origin から削除する

git rebase

コマンド 動作
git rebase (base branch) (branch) 対象ブランチをベースブランチにリベースする。
git rebase -i HEAD~(number) コミット歴を改変する。数字は遡る commit の数。

git remote

コマンド 動作
git remote -v リモートレポジトリ一覧を確認する
git remote add origin (remote repo) リモートレポジトリを登録する
git remote rm origin リモートレポジトリを削除する
git remote add upstream (remote repo) フォーク用のレポジトリを登録する

git reset

コマンド 動作
git reset ステージングエリアをリセットする
git reset --hard (commit ID) コミットを戻す

git revert

コマンド 動作
git revert (commit id) 対象コミットを取り消す
git revert -e (commit id) コミットメッセージを追加した上で、対象コミットを取り消す

git rm

コマンド 動作
git rm (file path) 対象ファイルを削除し、 git 管理からも削除する
git rm --cached (file path) 対象ファイルを git 管理からのみ削除する。ファイルを自体は残る。
git rm -r (direcotry) 対象ディレクトリを削除し、 git 管理からも削除する
git rm -r --cached (direcotry) 対象ディレクトリを git 管理からのみ削除する。ディレクトリを自体は残る。

git stash

コマンド 動作
git stash 現在の変更をスタッシュに保存する。git stash saveと同義。
git stash list スタッシュ一覧の表示
git stash (stash id) 対象スタッシュを現在のブランチに適応する。スタッシュ一覧には残ったまま。
git stash pop 最新のスタッシュを現在のブランチに適応し、スタッシュ一覧から削除する。
git stash pop (stash id) 対象スタッシュを現在のブランチに適応し、スタッシュ一覧から削除する。
git stash drop (stash id) 対象スタッシュを削除する

git tag

コマンド 動作
git tag tag 一覧を表示する
git tag (tag name) タグ名を指定して、タグを作成する。コメントはなし。
git tag -a (tag name) タグ名を指定して、タグを作成する。tag のコメントはエディタで入力可能。
git tag -a (tag name) -m "tag message" タグ名・コメントを指定して、タグを作成する
git tag -a (tag name) -m "tag message" (commit ID) 指定した commit に対して、タグ名・コメントを指定して、タグを作成する
git tag -d (tag name) 指定したタグを削除する

感想

とりあえずまとめてみました。今後、追加・修正を行っていこうと思います。

ではでは、また次回。

GCP 永久無料枠でインスタンスの作成

どうも、nippa です。

今回 GCP の永久無料枠でインスタンスを作成しようと思います。

インスタンス代は無料ですが、通信量は多少かかるので、完全無料とはなりませんが、月 100 円もかからない予定なので、GCP でテストサーバーを作成します。

前提事項・環境

今回は GCP の契約済みを前提としています。

GCP Compute Engine でのインスタンス作成になります。

他のサービスの無料枠については、こちらを参照ください。

Google Cloud の無料プログラム

インスタンスの無料枠

インスタンスの数に関わらず時間が無料枠になっています。

インスタンスの作成

画像の赤枠が最低限の設定になります。

f:id:NIPPA:20220106233618p:plain
gcp-fig1
今回 OS は Lockey Linux を採用しています。

好きな OS をお選びください。

f:id:NIPPA:20220106233702p:plain
gcp-fig2

ディスクは「標準永続ディスク」で 30GB にしています。

http(80) https(443)ポートの開放

http(80) https(443)を開放する場合、ファイアウォールの http、https にチェックを入 れてください。

f:id:NIPPA:20220106233705p:plain
gcp-fig3

固定 IP アドレスの設定

デフォルトではフィラメント(起動するたびに変更される)であるので、固定 IP アドレ スを取得しておくと便利です。

インスタンスに紐付けされている場合は、料金は無料です。

f:id:NIPPA:20220106233708p:plain
gcp-fig4

f:id:NIPPA:20220106233711p:plain
gcp-fig5

SSH 認証鍵の設定

デフォルトだとプロジェクト全体の SSH 認証鍵が設定されますが、個別の認証鍵も登録 できます。

SSH 認証鍵の作成は local 端末でで作成し、作成した鍵の公開鍵を登録を登録します。

ssh-keygen -t ed25519 -C "example@example.com"

f:id:NIPPA:20220106233713p:plain
gcp-fig6

設定が完了したら、「作成」でインスタンスを作成します。

SSH でのアクセス確認

インスタンスが起動したら、local から SSH 秘密鍵を利用してアクセスします。

ssh -i [ssh private key] [username]@[ip]

インスタンス詳細ページにユーザーと鍵の記載があります。

アクセスが確認できれば、接続は問題ありません。

セキュリティ設定

  • ssh(22)ポートの変更

デフォルトの ssh(22)ポートはすべての IP からアクセスを許可しているため、 SSH のポート変更・フィルタ指定を行う方が良いです。

VPC ネットワークからファイアウォールから設定できます。

感想

今回 GCPインスタンスの作成を行いました。

通信量的に月 100 円以下で、2vCPU/1GB のインスタンスが利用できるのはかなり魅力て きなので、オススメ致します。

ではでは、また次回。

ラズパイ Rocky LinuxのDocker環境構築

どうも、nippa です。

ラズパイ+ Rocky Linux(64bit) の運用を始めましたが、最近便利で使っている Docker 環境を Rocky Linux(64bit) に構築したいと思います。

環境

Docker のインストール

1. Locky Linux のレポジトリを登録します。

sudo dnf config-manager --add-repo=https://download.docker.com/linux/centos/docker-ce.repo

2. dnf のアップデート

sudo dnf update

3. Docker CE engine のインストール

sudo dnf install docker-ce docker-ce-cli containerd.io

4. Docker サービスの設定

sudo systemctl enable docker
sudo systemctl start docker

Docker サービスの状態を確認します。

systemctl status docker

5. Docker を利用するユーザーを Docker グループに登録

sudo usermod -aG docker [Username]

# ユーザーグループの確認
id [Username]

docker グループに入っていることを確認します。

6. Docker の実行

グループを変更したユーザーで docker を実行して、確認します。

docker run hello-world

#出力
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
93288797bd35: Pull complete
Digest: sha256:cc15c5b292d8525effc0f89cb299f1804f3a725c8d05e158653a563f15e4f685
Status: Downloaded newer image for hello-world:latest

Hello from Docker!
This message shows that your installation appears to be working correctly.

To generate this message, Docker took the following steps:
 1. The Docker client contacted the Docker daemon.
 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
    (arm64v8)
 3. The Docker daemon created a new container from that image which runs the
    executable that produces the output you are currently reading.
 4. The Docker daemon streamed that output to the Docker client, which sent it
    to your terminal.

To try something more ambitious, you can run an Ubuntu container with:
 $ docker run -it ubuntu bash

Share images, automate workflows, and more with a free Docker ID:
 https://hub.docker.com/

For more examples and ideas, visit:
 https://docs.docker.com/get-started/

上記のような出力がされれば、docker が利用できています。

docker-compose のインストール

バージョンアップ v1

  • インストール(バージョン 1.29.2)
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
  • アップデート(バージョン 1.29.2)
sudo export DOCKER_COMPOSE_V1_VERSION='1.29.2' curl -L "https://github.com/docker/compose/releases/download/${DOCKER_COMPOSE_V1_VERSION}/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
  • アンイストール
sudo rm /usr/local/bin/docker-compose
  • 実行方法
docker-compose up -d

バージョンアップ v2

  • インストール(バージョン 2.2.2)

バージョン 2 は CLI plugin として配布されるので、.docker/cli-pluginsにインスト ールする必要があります。

mkdir -p $HOME/.docker/cli-plugins
curl -SL https://github.com/docker/compose/releases/download/v2.2.2/docker-compose-linux-x86_64 -o ~/.docker/cli-plugins/docker-compose
chmod +x $HOME/.docker/cli-plugins/docker-compose
  • アップデート
export DOCKER_COMPOSE_V2_VERSION='v2.2.2'
curl -SL https://github.com/docker/compose/releases/download/${DOCKER_COMPOSE_V2_VERSION}/docker-compose-linux-x86_64 -o ~/.docker/cli-plugins/docker-compose
chmod +x $HOME/.docker/cli-plugins/docker-compose
  • アンイストール
rm $HOME/.docker/cli-plugins/docker-compose
  • 実行方法

プラグインのためハイフンが不要になります。

docker compose up -d

感想

今回 Locky Linux に Docker をインストールしましたが、Linux であればレポジトリの 登録以外同じになります。

そのため、他の Linux でも手順はほぼ同じになります。

勉強にはなりましたので、記事にしました。是非、試してみてください。

ではでは、また次回。

ラズパイ Rocky Linuxのインストール

どうも、nippa です。

久しぶり Raspberry Pi を触り初めました。自宅のサーバとして今後使っていこうと思い 、動かし始めました。

今日は Rocky Linux (64bit) を Raspberry Pi にインストールしたいと思います。

今回は Rocky Linux Wiki を参考に Raspberry に Rocky Linux をインストールします。

環境

  • Raspberry Pi OS 10(ディスク作成用、他の OS でもよい)
  • Rocky Linux 8.5(64bit)

ディスク(マイクロ SD カード)のフォーマット

まず SD カードを接続し、fdisk コマンドでディスクを削除します。parted でも代用可 能ですので、好きな方をお使いください。

ディスクリストの表示をします。

sudo fdisk -l

表示から SD カードのディスクを確認します。今回は/dev/sdaで進めていきます。

パーティションの削除を行った上で、ディスクをフォーマットします。

sudo fdisk /dev/sda

# パーティションの確認
Command (m for help): p

# パーティションの削除
Command (m for help): d
Partition number (1,2,5-7, default 7): # <--- Enter

# パーティションの削除
Command (m for help): d
Partition number (1,2,5,6, default 6): # <--- Enter

# パーティションをすべて削除するまで繰り返えします
# パーティションをすべてを削除したら、新規にパーティションを作成します。

# パーティションの確認
Command (m for help): p

# パーティションの作成
Command (m for help): n
Select(default p): p

# あとはEnterでOK

# パーティションの確認
Command (m for help): p

SD カードを ex4 にフォーマットします。

sudo mkfs.ext4 /dev/sda

# /dev/sdaのフォーマット状況を確認
sudo fdisk -l

これでマイクロ SD カードのフォーマットが完了です。

Rocky Linux のイメージのダウンロード

以下から、Raspberry Pi 用の Rocky Linux のイメージファイルをダウンロードします。

ファイル名:RockyRpi_8.5_20211116.img.xz

https://download.rockylinux.org/pub/rocky/8/rockyrpi/aarch64/images/

Rocky Linux のインストール

ダウンロードしたイメージファイルを SD カードに展開します。

xzcat RockyRpi_8.5_20211116.img.xz > /dev/sda

展開が完了したら、インストールは完了になります。

Rocky Linux の起動

ラズパイに SD カードを挿入して、電源をいれます。

Rocky Linux が起動し、ログイン画面が表示されます。

初期のログイン情報は

  • username: rocky
  • password: rockylinux

になります。

Rocky Linux の設定

ユーザーのパスワード変更

以下のコマンドでパスワードの変更が可能です。

passwd

ネットワークの設定

Wi-Fi のパッチをあてます。ホームディレクトリにパッチ用の Shell script が配置され ていますので、そちらを root ユーザーで実行します。

sudo sh fix-wifi-rpi4.sh

# パスワードはrockyユーザーのもの

まず、インターフェイスの確認をします。

sudo nmcli c

#出力
Wired connection 0  xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx  wifi      --
Wired connection 1  xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx  ethernet  --

Wi-Fi に接続します。SSID の確認

sudo nmcli d wifi

# Wi-Fiへの接続
sudo nmcli connection up [SSID]
# パスワードを入力

# 接続の確認
sudo nmcli connection show

自動接続にする場合は、以下のコマンドを実行してください。

sudo nmcli connection modify [SSID] connection.autoconnect yes

WiFi の設定は完了です。

ディスクスペースの拡張

初期段階では、3GB 程度に設定されているので、以下のコマンドでディスクを拡張します 。

# ディスクサイズの確認
df -h

# ディスクの拡張
sudo rootfs-expand

# ディスクサイズの再確認
df -h

感想

今回 Rocky Linux 64bit を Raspberry Pi にインストールしてみました。

Rocky Linux のコミュニティの方がイメージを作成してくれているため、非常に簡単にイ ンストールすることができました。

これで久しぶりに RedHat 系の Linux に触れそうです。

ではでは、また次回。

Docker MySQLの環境構築(その2)

どうも、nippa です。

前回の内容:

timesaving.hatenablog.com

Docker MySQL を docker-compose 化を行います。

ツール化して持っておけば、今後簡単に開発環境ごとにデータベースを用意することがで きるようになります。

環境

ディレクトリ構造

今回は以下のようなディレクトリ構造です。

.
├── docker-compose.yaml
└── mysql/
    ├── data/
    ├── dockerfile
    └── init/
        └── init.sql

datapostgresql のデータが保存されるディレクトリ、initはコンテナの初回起動 時に実行されるスクリプトを格納するディレクトリになります。

dockerfile の作成

dockerfile の内容は前回同様です。

FROM mysql:latest

# Time Zone
ENV TZ Asia/Tokyo

RUN apt update

docker コマンドでビルドする場合は、以下のコマンドで行います。

docker build -t mysql ./mysql

init.sql の作成

初回起動時に実行される SQL スクリプトです。内容は以下の通りです。

users テーブルを作成しています。スキーマの作成は docker-compose の環境変数で行い ます。

SELECT SCHEMA_NAME, DEFAULT_CHARACTER_SET_NAME, DEFAULT_COLLATION_NAME FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME='test';
USE test;

/** CREATE TABLE **/
CREATE TABLE IF NOT EXISTS users (
    id          int AUTO_INCREMENT PRIMARY KEY,
    username    VARCHAR ( 50 ) UNIQUE NOT NULL,
    password    VARCHAR ( 50 ) NOT NULL,
    email VARCHAR ( 255 ) UNIQUE NOT NULL,
    created_on TIMESTAMP NOT NULL
);

docker-compose.yaml の作成

docker-compose.yaml にコンテナの起動情報を記載します。

version: "3"
services:
  db:
    build: ./mysql
    container_name: mysql
    hostname: mysql
    ports:
      - 3306:3306
    environment:
      - MYSQL_ROOT_PASSWORD=root
      - MYSQL_DATABASE=test
      - MYSQL_USER=test
      - MYSQL_PASSWORD=test
    volumes:
      - ./mysql/data:/var/lib/mysql
      - ./mysql/init:/docker-entrypoint-initdb.d

上の docker-compose.yaml を docker コマンドで実行する場合は、以下のような形にな ります。

docker run --name db -it -p 3306:3306 \
     -e MYSQL_ROOT_PASSWORD=root \
     -e MYSQL_DATABASE=test \
     -e MYSQL_USER=test \
     -e MYSQL_PASSWORD=test \
     -v ./mysql/data:/var/lib/mysql \
     -v ./mysql/init:/docker-entrypoint-initdb.d
     -d mysql

docker-compose の起動と終了

docker-compose の起動コマンドは以下の通りです。

docker-comppose up -d

docker-compose の終了コマンドは以下の通りです。

docker-comppose down

データベースの確認

以下のコマンドでコンテナの MySQL にログインします

mysql -u test -h 127.0.0.1 -p -D test
Enter password: [パスワードの入力]
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 9
Server version: 8.0.27 MySQL Community Server - GPL

Copyright (c) 2000, 2021, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>

テーブルの確認を行います。

show tables;

# 出力
+----------------+
| Tables_in_test |
+----------------+
| users          |
+----------------+
1 row in set (0.00 sec)

mysql> select * from users;
Empty set (0.00 sec)

データの挿入をしてみます。

INSERT INTO users (username, password, email, created_on) VALUES ('Yamada Taro', 'yamadatraro', 'yamada-taro@example.com', now());

データの確認を行います。

mysql> select * from users;
+----+-------------+-------------+-------------------------+---------------------+
| id | username    | password    | email                   | created_on          |
+----+-------------+-------------+-------------------------+---------------------+
|  1 | Yamada Taro | yamadatraro | yamada-taro@example.com | 2021-11-21 21:24:20 |
+----+-------------+-------------+-------------------------+---------------------+
1 row in set (0.00 sec)

docker-compose の終了し、再度起動して、データが読み込まれているかを確認します。

# 終了
docker-compose down

# 終了の確認
docker-compose ps

# 出力
NAME                COMMAND             SERVICE             STATUS              PORTS

# 起動
docker-compose up -d

# 起動の確認
docker-compose ps

# 出力
NAME                COMMAND                  SERVICE             STATUS              PORTS
mysql               "docker-entrypoint.s…"   db                  running             0.0.0.0:3306->3306/tcp

データベースへアクセスします。

mysql -u test -h 127.0.0.1 -p -D test
mysql> select * from users;
+----+-------------+-------------+-------------------------+---------------------+
| id | username    | password    | email                   | created_on          |
+----+-------------+-------------+-------------------------+---------------------+
|  1 | Yamada Taro | yamadatraro | yamada-taro@example.com | 2021-11-21 21:24:20 |
+----+-------------+-------------+-------------------------+---------------------+
1 row in set (0.00 sec)

データが保存されていることが確認できました。

感想

PostgreSQL に続き、MySQL での docker-compose 化を行いました。

開発の環境構築が捗ること間違いないですね。

是非、試してみてください。

ではでは、また次回。