20200322のGitに関する記事は12件です。

git初心者がgitを使いこなすためのメモ

(1)初期設定

git config --global user.name "名前を入れる"
git config --global user.email メールアドレスを入れる

(2)gitリポジトリを作成する

リポジトリを作成したいディレクトリに移動して、下記コマンドを実行。

git init

・リポジトリ:ファイルやディレクトリの状態、変更履歴を記録する場所。

(3)gitの基本的なワークフロー

①ファイルの変更をステージングエリアに追加する

git add ファイル名     ←入力したファイルを追加
git add .          ←すべてのファイルの変更を追加
git rm ファイル名          ←削除したファイルを記録

②ローカルリポジトリにコミットする

git commit -m "コメントする"

③リモートリポジトリにプッシュする

まずリモートリポジトリに登録する

git remote add origin 登録gitのURL
git push origin master
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

TortoiseGitでGitHubに署名コミットしたときのメモ

? TortoiseGitでGitHubに署名コミットしたときのメモ

殴り書き。一部は随分前にやったことなのでなにか間違いがあったら指摘してくだせえ

? 環境

? 手順

  1. ファイル>New Pair Key

  2. 個人用のOpenPGP鍵ペアを生成

  3. Exportから-----BEGIN PGP PUBLIC KEY BLOCK-----の中身を全部GitHubのGPG keys/ Add newに貼り付ける

  4. 追加後にでてきたKey IDをTortoiseGitの設定>Git>署名鍵IDに貼り付け

  5. GitBashを起動し

    1. git config --global commit.gpgsign true
  6. 管理者権限でcmdを起動し次のシンボリックリンクを作成

    1. mklink /D %USERPROFILE%\.gnupg %AppData%\GnuPG
  7. GitHubに適当なリポジトリを切り適当にコミットしようとすると鍵のパスワードを聞かれるので入力

  8. PUSHしてGitHubのコミット履歴にverified signatureがついてたら成功

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Windows10へインストール操作しないで開発環境を作る(1日目)

やりたい事

非力な開発環境なので頻繁にパソコンをクリーンインストールして利用中。クリーンインストールする度に環境構築をするのはかなり大変なので、簡単に開発環境を作る方法を模索中。
理想はクラウドIDEだと思うのだが、いまいち実現イメージが沸かない。
Git、Visual Studio Codeにポータブル版があるようなのできっと実現できるはず!と思って試行錯誤中。

実現したい事

クリーンインストール後のWindows10にサクッとPython開発環境を構築したい。

環境

  • Windows10
  • PortableGit
  • Visual Studio Code(ポータブルモード)
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

SourceTreeインストール方法

はじめに

SourceTreeは、GitをGUIで扱えるツールです。
ここでは、SourceTreeのインストール方法について、解説します。
後日、初期設定についても追記する予定です。

SourceTreeのダウンロード、インストール

SourceTreeのダウンロードページにアクセスします。
「Download」をクリックすると、インストーラーがダウンロードされます。

sourcetree_download.PNG

指示に従って進んでいくと、インストールが完了します。

sourcetree_top.PNG

このような画面が立ち上がれば完了です。

まとめ

ここでは、SourceTreeのインストール方法について解説しました。
コマンド操作に苦手意識のある人でもGitを扱えるようになります。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

「こんなことしたい」って時にどんなgitコマンド使えば良いのか?

目的

ここ一年位になって(ようやく)gitを使う頻度が増えたのですが、非常に使いやすいと感じたので、備忘録として
覚えたことが増えたらちょこちょこ更新していこうかなと考えています。

とはいえ、まだ勉強中なので、表現が間違っていたり
「このコマンドは正確にはそういう意味じゃない」とか
「こっちのコマンドの方が良い」などあればご指摘いただければと思います。

なんとなく理解している構造

コマンドと構造にかんするなんとなくの理解

よく使うコマンド(オプションなし)の一覧

コマンド 概要 備考
git remote リモートリポジトリの確認
git fetch リモートリポジトリの内容をリモート追跡ブランチに反映する
git checkout ローカルブランチの切り替えやワーキングツリーの編集内容をローカルブランチの内容に戻す 指定したブランチ名がない場合はgit branchのブランチ切り出しと同じ意味
git branch ブランチ一覧取得したり、ローカルでブランチを切り出したりする
git add ワークツリーからインデックスに追加する
git status ワーキングツリーの状態を確認する
git diff 作業の差分を確認 コミット間やワーキングツリーとインデックス間の差分
git stash 作業内容を一時退避する
git commit インデックスからローカルリポジトリに反映する
git reset addcommitを取り消す
git push ローカルリポジトリの内容をリモートリポジトリに反映する

やりたいこと別コマンド一覧

ローカル作業前

やりたいこと コマンド
リモート追跡ブランチを最新化したい git fetch
リモートブランチと、ローカルブランチの状態を確認したい git remote show <リモート名>
リモート側で既に消えているブランチがあったので、リモート追跡ブランチからも消したい git remote prune origin
リモートブランチの内容をローカルブランチに反映したい git pull --no-rebase <リモート名> <ブランチ名>
ローカルのブランチ一覧を確認したい git branch
リモート追跡ブランチを含めてローカルのブランチ一覧を確認したい git branch -a
ブランチを切り替えたい git checkout <ブランチ名>
今のブランチから新しいブランチを切り出したい git branch <ブランチ名>
  • pullはよくわからないので後でちゃんと調べたい・・・

ローカル作業中

やりたいこと コマンド
ワーキングツリー・インデックスの編集状態を一覧で確認したい git status
ワーキングツリーの編集内容を取り消してブランチのコミット済み状態で上書きしたい git checkout <ファイル名>
インデックス登録済ファイルの編集差分を確認したい git diff
特定のインデックス登録済ファイルの編集差分を確認したい git diff <ファイル名>
特定のファイルをインデックスに登録したい git add <ファイル名>
カレントディレクトリ配下の全未登録作業内容をインデックスに登録したい git add .
ワーキングツリー内の全未登録作業内容をインデックスに登録したい git add -A
ワーキングツリー内でインデックス未登録(新規ファイル)を覗いた作業内容をインデックスに登録したい git add -u
変更内容を対話式で確認しながらインデックス登録する git add -p
addコマンド実行時にどのファイルがインデックス登録されるかの確認だけしたい git add -n
間違えてaddしたのを取り消したい(※) git reset HEAD <対象のファイル>
  • --soft--hardかでワーキングツリーの状態が変わる

ローカル作業中だけどブランチを切り替えて別作業をしたい(インデックスの内容を退避させて置きたい)

  • stash@{n}を指定しない場合はstash@{0}(最新stash)が対象
やりたいこと コマンド
作業内容を一旦退避させたい git stash
stashの一覧を確認したい git stash list
stash@{n}だけだとわからないのでコメントをつけてstashしたい git stash save <コメント>
stash内容をファイル一覧で確認したい git stash show stash@{n}
stash内容を差分で確認したい git stash -p show stash@{n}
stash内容を元に戻したい git stash apply stash@{n}
stash内容を元に戻した上でstashを消したい git stash pop stash@{n}
stash内容を消したい git stash drop stash@{n}
全stash内容を消したい git stash clear

作業完了

やりたいこと コマンド
ローカルブランチにコミットしたい git commit -m <コミットメッセージ>
複数行のコミットメッセージを入れてコミットしたい git commit
→vimでコミットメッセージを編集
コミットを取り消したい git reset --hard HEAD^
リモートブランチにプッシュしたい git push <リモート名> <ブランチ名>

作業後

やりたいこと コマンド
リモート追跡ブランチを最新化したい git fetch
リモートブランチとか、ローカルとリモートの比較状態確認したい git remote show <リモート名>
リモートで消えてるブランチあったら、リモート追跡ブランチから消したい git remote prune <リモート名>
ローカルからブランチを消したい git branch -d <ブランチ名>
ローカルから強制的にブランチを消したい git branch -D <ブランチ名>

その他

やりたいこと コマンド
今のワーキングツリーにマージしたらコンフリクトが起きるか確認したい git merge --no-commit <ブランチ名>
コンフリクトの確認だけしてマージをやめたい git merge -revert
コンフリクトの解消をしたのでインデックスに追加したい git add <ファイル名>

課題

  • もっとちゃんと調べたほうがいいコマンド
    • git pull
    • git add
    • git reset
  • gitの基本的な概念をもっと理解したほうが扱いやすそう
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Githubからダウンロードしたリポジトリを、自分の環境で起動させる方法(Ionicの場合)

Githubからダウンロードしたリポジトリ、エラー出るんやけど?

他人のGithubからダウンロードしたリポジトリ、普通にionic serveしても起動しないんだよな〜・・・

スクリーンショット 2020-03-22 17.44.04.jpg

ダウンロードしました。
これを自分のPCで起動させようとすると、エラーがどーん!

$ ionic serve
> ng run app:serve --host=localhost --port=8100
[ng] An unhandled exception occurred: Could not find module "@angular-devkit/build-angular" from "/Users/gen/Desktop/basic/ionic/talktive-master".
[ng] See "/private/var/folders/r2/qclzlqq52y3c3nyffqn3lb500000gn/T/ng-JPHzL8/angular-errors.log" for further details.

[ERROR] ng has unexpectedly closed (exit code 127).

        The Ionic CLI will exit. Please check any output above for error details.

はい、意味わかりません。

結論

ionic serveの前に、npm installが必要!!

$ npm install

これによってそのアプリケーションに必要な依存関係を解消してくれる。

最後に

初心者あるあるではないだろうか?

また、一応「ionicの場合」としているが、他のフレームワークでも同じような感じかと。。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

GitHubでソース管理をする流れ

環境
git version 2.25.1.windows.1

手順

1.リモートリポジトリをローカルに落とす

$ git clone git@github.com:【ユーザー名】/【リポジトリ名】.git

落としたリポジトリの確認

$ git branch
* master

作成された段階のリポジトリには「master」ブランチのみが存在します。

2.作業ブランチを作成する
修正をする場合、masterをコピーしたブランチを触る。

$ git branch copy_branch

ブランチ一覧を確認すると、コピーしたブランチができている。

$ git branch
* master
copy_branch

3.ブランチの移動
アスタリスクがついているのが現在選択中のブランチ。
作業ブランチに移動する。

$ git checkout copy_branch
Switched to branch 'copy_branch'

ブランチ一覧を確認すると、copy_branchにアスタリスクがついているのが確認できる。

$ git branch
master
* copy_branch    

4.ファイルを作成する
今回は単なるテキストファイルを作成します。

$ vi a.txt  

5.作成したファイルをバージョン管理の対象に追加する

コミットする前には必ずaddしなければなりません。
addすることでGitのコミット対象になります。

$ git add a.txt  

6.コミットする内容を確認する

$ git status
On branch copy_branch
Changes to be committed:
(use "git restore --staged <file>..." to unstage)
new file:   a.txt

a.txtが追加されていることが確認できます。

7.コミットする

きちんとaddされている状態でコミットします。

$ git commit -m "test commit"
[xxx e6b74e6] test commit
1 files changed, 1 insertion(+)
create mode 100644 a.txt

コミットコメントはダブルクオートで囲んで記入します。

コミットが完了すると、statusは以下のようになります。

$ git status
On branch copy_branch
nothing to commit, working tree clean

8.GitHubへプッシュする
ローカル環境でコミットが完了したので、次にGitHubへ反映させます。

$ git push origin copy_branch
Enumerating objects: 5, done.
Counting objects: 100% (5/5), done.
Delta compression using up to 4 threads
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 300 bytes | 150.00 KiB/s, done.
remote:
remote: Create a pull request for 'test' on GitHub by visiting:
remote:      https://github.com/user/test/pull/new/test
remote:
Total 3 (delta 0), reused 0 (delta 0)
To https://github.com/user/test.git
   e6b74e6..dd1235a  copy_branch -> copy_branch

9.プルリクを送る
先ほどpushしたときに出たhttps://github.com/user/test/pull/new/test へアクセスすると、プルリクを送れる画面に行けるのでコメント残してぽちります。

10.ローカルブランチを削除する

作業ブランチを違うブランチに切り替えてから削除を行います。

$ git checkout master
Switched to branch 'master'
Your branch is up to date with 'origin/master'.

$ git branch --d copy_branch
Deleted branch copy_branch (was dd1235a).

作業ブランチを変えないまま削除しようとすると、下記のようなエラーになります。

$ git branch --d copy_branch
error: Cannot delete branch 'copy_branch' checked out at 'C:/Users/test'

11.リモートリポジトリの最新を取得する
常に最新のmasterを取得し、それをコピーしたbranchで作業を行います。

$ git pull origin master
remote: Enumerating objects: 1, done.
remote: Counting objects: 100% (1/1), done.
remote: Total 1 (delta 0), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (1/1), 621 bytes | 20.00 KiB/s, done.
From https://github.com/user/test
 * branch            master     -> FETCH_HEAD
   f8999d2..8d6e7ad  master     -> origin/master
Updating f8999d2..8d6e7ad
Fast-forward
 a.txt | 1 +
 b.txt | 0
 2 files changed, 1 insertion(+)
 create mode 100644 b.txt
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Git のパスフレーズ省略

はじめに

Windows + Git で SSH 通信の環境を対象としています。
パスフレーズの省略方法は複数ありますが、一番かんたん & セキュリティ的によさそうな方法
と個人的に思うものを記載します。

環境

~/.bashrc

~/.bashrcに以下を記入します。~/.bashrcがない人は新規作成してください。
~/%HOME%を指しています。今回の場合はC:/Users/<ユーザー名>フォルダに.bashrcを新規作成してください。

~/.bashrc
#ssh-agent
eval $(ssh-agent -s)
ssh-add ~/.ssh/id_rsa

~/.bashrcは、Git Bash 起動時のみ実行されるので起動中の場合は再起動してください。
または、bash コマンドを叩くでも OK。

~/.bash_logout

ターミナルを閉じたときに、~/.bashrcで起動した ssh-agent を終了させるため
~/.bash_logoutに以下を記入します。~/.bash_logoutがない人は同じく新規作成してください。

~/.bash_logout
ssh-agent -k

Git Bash 起動時

Git Bash 起動時にパスフレーズを聞かれるようになります。
Git Hub (Git Lab) のパスワードを入力してください。入力後は、Git Bash を新たに立ち上げるまでパスフレーズを聞かれることはありません。

Agent pid 553
Enter passphrase for /c/Users/username/.ssh/id_rsa:

~/.bashrcを新規作成した人は、以下の警告が出ることがありますが

WARNING: Found ~/.bashrc but no ~/.bash_profile, ~/.bash_login or ~/.profile.
This looks like an incorrect setup.
A ~/.bash_profile that loads ~/.bashrc will be created for you.

~/.bash_profile、 ~/.bash_login または ~/.profile が見つからないので、~/.bashrc を読み込む ~/.bash_profile を作りました!
といった内容のため、気にしなくても問題はありません。

パスフレーズ入力後、以下のように出力されれば OK。

Agent pid 553
Enter passphrase for /c/Users/username/.ssh/id_rsa:
Itentity added: /c/Users/username/.ssh/id_rsa

さいごに

パスフレーズ省略の記事はいくつかありますが、
_netrc.gitconfig等の複数ファイルを編集する、パスフレーズをファイルに平文で記入するなど
むずかしそう & ファイルにパスフレーズを直接記入するのはセキュリティ的に不安だと思い
この方法に落ち着きました。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

GitHub パスフレーズ省略

はじめに

Windows + Git で ssh 通信の環境を対象としています。
パスフレーズの省略方法は複数ありますが、一番かんたん & セキュリティ的によさそうな方法
と個人的に思うものを記載します。

環境

~/.bashrc

~/.bashrcに以下を記入します。~/.bashrcがない人は新規作成してください。
~/%HOME%を指しています。今回の場合はC:/Users/<ユーザー名>フォルダに.bashrcを新規作成してください。

~/.bashrc
#ssh-agent
eval $(ssh-agent -s)
ssh-add ~/.ssh/id_rsa

~/.bashrcは、Git Bash 起動時のみ実行されるので起動中の場合は再起動してください。
または、bashコマンドを叩くでもOK。

Git Bash 起動時

Git Bash 初回起動時にパスフレーズを聞かれるようになります。
Git Hub のパスワードを入力してください。入力後は、Git Bash を新たに立ち上げるまでパスフレーズを聞かれることはありません。

Agent pid 553
Enter passphrase for /c/Users/username/.ssh/id_rsa:

~/.bashrcを新規作成した人は、以下の警告が出ることがありますが
~/.bash_profile、 ~/.bash_login または ~/.profile が見つからないので、~/.bashrc を読み込む ~/.bash_profile を作りました!
といった内容のため、気にしなくても問題はありません。

WARNING: Found ~/.bashrc but no ~/.bash_profile, ~/.bash_login or ~/.profile.
This looks like an incorrect setup.
A ~/.bash_profile that loads ~/.bashrc will be created for you.

パスフレーズ入力後、以下のように出力されればOK。

Agent pid 553
Enter passphrase for /c/Users/username/.ssh/id_rsa:
Itentity added: /c/Users/username/.ssh/id_rsa

さいごに

パスフレーズ省略の記事はいくつかありますが、
_netrc.gitconfig等の複数ファイルを編集する、パスフレーズをファイルに平文で記入するなど
むずかしそう & ファイルにパスフレーズを直接記入するのはセキュリティ的に不安だと思い
この方法に落ち着きました。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Git Hub (Git Lab) SSH のパスフレーズ省略

はじめに

Windows + Git で SSH 通信の環境を対象としています。
パスフレーズの省略方法は複数ありますが、一番かんたん & セキュリティ的によさそうな方法
と個人的に思うものを記載します。

環境

~/.bashrc

~/.bashrcに以下を記入します。~/.bashrcがない人は新規作成してください。
~/%HOME%を指しています。今回の場合はC:/Users/<ユーザー名>フォルダに.bashrcを新規作成してください。

~/.bashrc
#ssh-agent
eval $(ssh-agent -s)
ssh-add ~/.ssh/id_rsa

~/.bashrcは、Git Bash 起動時のみ実行されるので起動中の場合は再起動してください。
または、bash コマンドを叩くでも OK。

~/.bash_logout

ターミナルを閉じたときに、~/.bashrcで起動した ssh-agent を終了させるため
~/.bash_logoutに以下を記入します。~/.bash_logoutがない人は同じく新規作成してください。

~/.bash_logout
ssh-agent -k

Git Bash 起動時

Git Bash 起動時にパスフレーズを聞かれるようになります。
Git Hub (Git Lab) のパスワードを入力してください。入力後は、Git Bash を新たに立ち上げるまでパスフレーズを聞かれることはありません。

Agent pid 553
Enter passphrase for /c/Users/username/.ssh/id_rsa:

~/.bashrcを新規作成した人は、以下の警告が出ることがありますが

WARNING: Found ~/.bashrc but no ~/.bash_profile, ~/.bash_login or ~/.profile.
This looks like an incorrect setup.
A ~/.bash_profile that loads ~/.bashrc will be created for you.

~/.bash_profile、 ~/.bash_login または ~/.profile が見つからないので、~/.bashrc を読み込む ~/.bash_profile を作りました!
といった内容のため、気にしなくても問題はありません。

パスフレーズ入力後、以下のように出力されれば OK。

Agent pid 553
Enter passphrase for /c/Users/username/.ssh/id_rsa:
Itentity added: /c/Users/username/.ssh/id_rsa

さいごに

パスフレーズ省略の記事はいくつかありますが、
_netrc.gitconfig等の複数ファイルを編集する、パスフレーズをファイルに平文で記入するなど
むずかしそう & ファイルにパスフレーズを直接記入するのはセキュリティ的に不安だと思い
この方法に落ち着きました。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

他の開発メンバーが途中まで進めたリモートブランチを引き継ぐ方法

git fetch *リモートリポジトリの情報をローカルへ

git branch [リモートブランチ名] [origin/リモートブランチ名]
*ローカルリポジトリに同じ名前で引継ぐ
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

GitHubActionsを使ってみた!masterブランチにpushがあったらSlackに通知する機能をサクッと作る

前々から気にはなっていたGitHubActions。全然試したことがなかったので、今回軽い機能を作ってみて試してみました。

※GitHubActionsとは

ワークフローとは、GitHubで任意のプロジェクトをビルド、テスト、パッケージ、リリース、またはデプロイするためにリポジトリで設定できる、カスタムの自動プロセスです

皆んな大好き自動化をymlで簡単に書けるで!って感じのやつ。
説明にある通り、リリースやビルド作業まで全部自動化してくれるすごいやつ。

今回はそんな大層なものは作成せず、軽いGit運用のための自動化を行います。
「masterブランチにpushがあった段階でslackに通知をする」機能を作成します。完成は以下のような感じ。
Slack.png

GitHubActionsを使ってワークフローを設定しよう

GitHubの公式にほぼ完成系が載っていた。
ワークフローを設定する

これを参考に以下のことを追記していきます。

  1. git logをcatする
  2. catした内容をcurlでpostしてSlack側に通知

GitHubのリポジトリにワークフローを設定する

まずGitHubの自分のリポジトリに所に行って「Actions」タブをクリック。
赤枠の部分「Set up workflow yourself」というボタンがあるのでクリックする
Actions.png

そうすると.githubディレクトリ配下に自動で雛形を作成してくれます。
New_File.png

デフォルトだと以下のように書いてあります。
ほとんどこのまま使えます。

# This is a basic workflow to help you get started with Actions

name: CI

# Controls when the action will run. Triggers the workflow on push or pull request 
# events but only for the master branch
on:
  push:
    branches: [ master ]
  pull_request:
    branches: [ master ]

# A workflow run is made up of one or more jobs that can run sequentially or in parallel
jobs:
  # This workflow contains a single job called "build"
  build:
    # The type of runner that the job will run on
    runs-on: ubuntu-latest

    # Steps represent a sequence of tasks that will be executed as part of the job
    steps:
    # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
    - uses: actions/checkout@v2

    # Runs a single command using the runners shell
    - name: Run a one-line script
      run: echo Hello, world!

    # Runs a set of commands using the runners shell
    - name: Run a multi-line script
      run: |
        echo Add other actions to build,
        echo test, and deploy your project.

masterブランチにpush, masterブランチへのプルリクが作成されたら

on:
  push:
    branches: [ master ]
  pull_request:
    branches: [ master ]

色々echoするで!って感じで書かれています。
デフォルトのまま実行してもechoされるだけです。
ここを変えて、git logを出力して、curlでpost送信する記述を書けばOK。

jobs:
  # This workflow contains a single job called "build"
  build:
    # The type of runner that the job will run on
    runs-on: ubuntu-latest

    # Steps represent a sequence of tasks that will be executed as part of the job
    steps:
    # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
    - uses: actions/checkout@v2

    # Runs a single command using the runners shell
    - name: Run a one-line script
      run: echo Hello, world!

    # Runs a set of commands using the runners shell
    - name: Run a multi-line script
      run: |
        echo Add other actions to build,
        echo test, and deploy your project.

Gitのログをフォーマットして表示する

Gitのログをただ闇雲に送ってもしょうがないので「誰がマージして、何のファイルを更新したか」の内容で送ろうと思います。

割と見やすいサイトがあったので置いておきます。
https://26gram.com/git-log

今回は–numstat オプションを使用して、変更のあったファイル、変更行数を出力。
git log --numstat -m -1

上記のコマンドを実際にgitリポジトリのディレクトリで打つと以下のような感じで出力されます。

❯ git log --numstat -m -1
commit ferfgoergedk32323121 (HEAD -> master, origin/master, origin/HEAD)
Author: ys <hoge@gmail.com>
Date:   Sun Feb 2 10:42:55 2020 +0900

    @style 謎の改行削除

1       1       header.php

さらにgitのログをフォーマットして表示したいので、オプションを追加します。
--date=iso --pretty='[%ad] %h %an : %s'

これを実際に打つと以下のような感じでコミット者とコミットメッセージなんかも拾えます。
詳しくは以下を参照してください。
git logのフォーマットを指定する

❯ git log --date=iso --pretty=format:"[%ad] %h %an : %s"

[2020-02-02 10:42:55 +0900] 34sr3t3 ys : @style 謎の改行削除
[2020-02-02 10:24:17 +0900] 34sr342 ys : @update CSSを最新化
[2020-02-01 10:21:26 +0900] 34sr3t3 ys : @update 運用用にリファクタリング
[2020-01-29 07:18:39 +0900] 34sr3t3 ys : @udpate SEO系を修正
[2020-01-28 07:51:56 +0900] 34sr3t3 ys : @update 構造化マークアップを修正
[2020-01-12 19:09:49 +0900] 34sr3t3 ys : @test テスト修正

これを合体させればOK。

git log --numstat -m -1 --date=iso --pretty='[%ad] %h %an : %s'

SlackのWebhookURLを取得する

すでにSlackに登録してあること前提で進めます。
Slack通知を飛ばすためにはWebhookのURLが必要です。
以下のURLにアクセスして、自分の飛ばしたいワークスペースのチャンネル名でWebhookのURLを作成します。
https://slack.com/services/new/incoming-webhook

赤枠からサインインしてるワークスペースのチャンネルを選択。
選択したら「Incoming Webhook インテグレーションの追加」ボタンをクリック。
Incoming_Webhook.png

そうするとWebhookのURLが発行されます。
これは他人には公開してはいけないので大切にコピー。

Incoming_Webhook___Slack_App_ディレクトリ.png

項目の下の方に行くと、「こう送れば、チャットにこう表示されるでー」というcurlのコマンド例が表示されています。\優しい/
実際に自身のターミナルからコマンド叩けば、Slackに通知がいきます。
Incoming_Webhook___Slack_App_ディレクトリ.png

このcurlコマンドはほぼそのまま使うのでコピペしておきましょう。

実際にGitHubワークフローを変更してみる

上記のコマンドを羅列するには、jobs.build.runsの箇所にコマンドを繋ぐだけ。
一つ一つ設定していきます。

①:ワークフロー名を設定

実行してくれるワークフローの名前。お好みで。

name: Docker image CI

②:トリガーを設定

masterブランチにpushがあったらイベントが発火する。

on:
  push:
    branches: master

③:環境変数を設定

環境変数を設定します。(個人的にコマンドが長くなるのが嫌で変数を使っています)
先ほどコピーしたSlackのWebhookのURLをHOOK_URLにペースト。
REPO_NAMEは自身のリポジトリ名を記入してください。

env:
  HOOK_URL: https://hooks.slack.com/services/HOFEHOGE/HOGE123HOGE345HOGE678
  REPO_NAME: YOUR_REPOSITORY_NAME

④:ジョブを設定

先ほどのコマンドをコピペ。
パイプで実行したい場合は、最初にパイプを置いちゃうらしい。run: |みたいな感じで。
先ほどのgitのlogをテキストファイルに保存して、curlでその内容を送信!

Slackの記法については詳しくは触れませんが、text部分に送信内容を書けばOK。
icon_emojiは自身のSlackに絵文字をインストールするなりして、色々カスタマイズできます。(カスタム絵文字というらしい)
僕の場合は:github_icon:という形で、GitHubのアイコンを使用しているので以下の記述になっています。Slack.png>わいがGitHub君や

カスタム絵文字に関しては以下を参照してください。
https://slack.com/intl/ja-jp/help/articles/206870177-%E3%82%AB%E3%82%B9%E3%82%BF%E3%83%A0%E7%B5%B5%E6%96%87%E5%AD%97%E3%82%92%E8%BF%BD%E5%8A%A0%E3%81%99%E3%82%8B

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v1
    - name: Send Slack from gitlog
      run: |
        git log --numstat -m -1 --date=iso --pretty='[%ad] %h %an : %s' > gitlog.txt
        curl -X POST --data-urlencode "payload={\"channel\": \"#hogehoge\", \"username\": \"github_aciton_bot\", \"text\": \"*${REPO_NAME} masterブランチが更新されました。*\n `cat gitlog.txt`\", \"icon_emoji\": \":github_icon:\"}" ${HOOK_URL}

全体像は以下。

name: Docker image CI

on:
  push:
    branches: master

env:
  HOOK_URL: https://hooks.slack.com/services/HOFEHOGE/HOGE123HOGE345HOGE678
  REPO_NAME: Docker-Dev

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v1
    - name: Send Slack from gitlog
      run: |
        git log --numstat -m -1 --date=iso --pretty='[%ad] %h %an : %s' > gitlog.txt
        curl -X POST --data-urlencode "payload={\"channel\": \"#hogehoge\", \"username\": \"github_aciton_bot\", \"text\": \"*${REPO_NAME} masterブランチが更新されました。*\n `cat gitlog.txt`\", \"icon_emoji\": \":github_icon:\"}" ${HOOK_URL}

⑤:動作確認

実際に設定したリポジトリでmasterにpushを実行してみましょう。
以下のような感じで通知が飛んでいれば成功です。
Slack.png

終わり

思った以上に簡単にできた。
次はデプロイの手順とか色々勉強してみようー!

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む