20191026のGitに関する記事は5件です。

コマンドの引数を実行時に指定してコマンドをショートカットする方法[alias]

コマンドが長いとaliasでショートカットしたくなりますよね?

ところで、コマンドの引数を実行時に指定したいときもショートカットはできるのでしょうか?

今回はその方法を調べることがあったので、まとめておきます。
なお、今回ショートカットしたいコマンドはgit push $BRANCHNAMEです。

aliasの書き方

~/.bashrcなどに以下のように書きます。

~/.bashrc
alias gpu='~/.sh/gitpush.sh'

alias CMD='/path/cmd.sh'とaliasで設定するショートカットの対象となるコマンドが記載されているファイルのパスを書くことがポイントです。

ショートカットしたいコマンドが記載されたファイルの配置

今回ショートカットしたいコマンドは、git push $BRANCHNAMEなので、aliasで指定したファイルにはこのように書きました。

~/.sh/gitpush.sh
#!/bin/bash

git push origin $@

あとは、ファイルに実行権限を付与して. ~/.bashrcで読み込むだけです。

$ chmod +x ~/.sh/gitpush.sh
$ . ~/.bashrc
$ gpu master

参考
Make a Bash alias that takes a parameter?

P.S. Twitterもやってるのでフォローしていただけると泣いて喜びます!
@gkzvoice

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

引数をコマンドに渡してショートカットする方法[alias]

コマンドが長いとaliasでショートカットしたくなりますよね?

ところで、引数をコマンドに渡してショートカットすることはできるのでしょうか?

今回はその方法を調べたので、まとめておきます。
なお、ショートカットしたいコマンドはgit push $BRANCHNAMEです。

aliasの書き方

~/.bashrcなどに以下のように書きます。

~/.bashrc
alias gpu='~/.sh/gitpush.sh'

alias CMD='/path/cmd.sh'とaliasで設定するショートカットの対象となるコマンドが記載されているファイルのパスを書くことがポイントです。

ショートカットしたいコマンドが記載されたファイルの配置

aliasで指定したファイルにはこのように書きました。

~/.sh/gitpush.sh
#!/bin/bash

git push origin $@

あとは、ファイルに実行権限を付与して. ~/.bashrcで読み込むだけです。

$ chmod +x ~/.sh/gitpush.sh
$ . ~/.bashrc
$ gpu master

参考
Make a Bash alias that takes a parameter?

P.S. \$@と\$*の違い
これは備忘録ですが、引数の数が分からない場合の引数の渡し方も調べたところ、\$@と\$*2つあるようでした。
今回は"args1 args2"をひとつの引数としてみなしてくれる\$@"を採用しました。

参考
Difference between $* and $@ in Shell

2019/10/27-15:43追記

@angel_p_57さんから下記のとおり、コメントをいただきました。

その違いはダブルクォート内で使った場合のものなので、本記事のように裸で使っても違いは出ないです。
"$@"のようにして使うことをお勧めします。

P.P.S. Twitterもやってるのでフォローしていただけると泣いて喜びます!
@gkzvoice

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

customizable-gitmoji-cliで、gitのコミットメッセージに絵文字を付ける

はじめに

gitmoji文化というものがあります。

以下は私のプロジェクトにおけるコミット履歴です。

image.png

参照:https://github.com/SnO2WMaN/customizable-gitmoji-cli/commits/master

なぜ?

いろいろあると思いますが、私は以下の理由です。

コミットの粒度を上げる

特技はgit commit -a -m いろいろ修正です!
参照:横着で神経質な私とあなたに贈るgit add -p

私は放っておくとこれになっちゃうので、なんとなくカテゴライズしておくことで目標立てて開発をするようにしました。 1

Conventional Commitsの環境整えるの面倒になってきた

Conventional Commitsというものがあります。(こっちのほうがスタンダードだとは思います、少なくともJavascript / Node.js / フロントエンドサイドのプロジェクトではそうだと思います)

大体次のようなコミットメッセージです。

fix: Fix Something
chore(deps): Update dependencies.

これは自動でバージョン更新したりするときなどに有用なんですが、いかんせんCLIの整備やいろいろ付け加えた結果設定ファイルがモリモリ増えちゃって何が何なのかわからなくなっちゃいました。

gitmojiでは、同作者によるCLI(gitmoji-cli)が用意されていて、導入も簡単だったので良かったです。

参考

一方

gitmoji-cliはたしかに便利だったんですが、本家のgitmojiのみしか使えなかったので、プロジェクト下において明らかに不必要な絵文字があったり、逆に痒い所の為の絵文字が無かったりしてそこはそこで不便でした。

そこで今回、カスタマイズ可能なcustomizable-gitmoji-cliを作成しました。

customizable-gitmoji-cli

オプションの詳細などはREADME-jp.mdを読んでもらえると助かります。

このCLIでは、.gitmojircなどの設定ファイル2によって自由に絵文字を追加することが出来ます。また、ESLint/Prettier/Stylelint/etc...の共有設定ファイルのようにプレセットを読み込む機能もあります。

.gitmojirc
{
  "emojiFormat": "emoji",
  "presets": ["@sno2wman/gitmoji-preset"],
  "rules": [
    {
      "emoji": "?",
      "description": "Everything must go!!",
      "name": "clown_face"
    }
  ],
}

この設定ファイルをプロジェクトに含んでおけば、CLIからコミットをする限り、全員が同じコミット規則に従ってコミットが行われるはずです。

emojiFormat

コミット時に添付される絵文字のフォーマットを選択できます。
emoji, codeのどちらかを設定することが出来ます。

  • emoji
    • ?, ?, ?
    • ? Kill process
  • code
    • :ok_hand:, :dog:, :knife:
    • :knife: Kill process (Github上などでは絵文字が表示されます)

私はemojiに設定しています。(たまに各種サービスやCI上では:knife:と表示されて見栄えが悪いので…)

rules

以下の形式でgitmojiを定義してください。

{
  "emoji": "?",
  "description": "Feel good.",
  "name": "gorilla"
}

ikatyang/emoji-cheat-sheetが役に立つはずです。

presets

まだ本家のgitmojiに対応するプレセットのgitmoji-preset-baseと、私個人の@sno2wman/gitmoji-presetしかありません…
名前解決の方法は以下のとおりです。

  • @username/gitmoji-preset
    • そのまま読み込みます
  • gitmoji-preset-foo
    • そのまま読み込みます
  • bar
    • gitmoji-preset-barの形にして読み込みます。

gitmoji-preset-baseを除く全てのプレセットは、プロジェクト直下にnpm i/yarn addしてインストールされている必要があります。

展望

  • #3
    • プレセット側で設定することで、コミット履歴より自動でバージョン更新の判断などが出来るようにしたい。

おわりに 3

gitmojiが様々な場面で使われることを祈っています。

よかったらプロジェクトにスターをしてください。励みになります。

貢献をしてくれるともっと喜びます。


  1. 個人の感想です。 

  2. 設定ファイルはcosmiconfigに対応しています。つまり.gitmojirc, .gitmojirc.jsonなどの形式が対応しています。 

  3. 記事内で絵文字を使わない所が良くないと思う。 

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

Git

共有リポジトリ

共有リポジトリは、チームメンバーで共有するリポジトリで、ソースコードのメインヴァージョンが格納されている。開発者はここにあるソースコードをpull/fetchで取り込める。

ローカルリポジトリ

作業者のマシンの上にあるリポジトリです。ローカルマシンでの作業内容が保存される。pushにより共有リポジトリに変更内容を反映する。

インデックス

ローカルリポジトリへ反映する変更を一時的に貯めておく場所。インデックスの内容はcommitによりローカルリポジトリへ反映される。

作業ツリー

ローカルリポジトリ上にある現在の作業ファイル。作業ツリーの変更点はaddによりインデックスに追加される。

流れの例

作業ツリー add index commit ローカルリポジトリ push 共有リポジトリ

コマンド

リポジトリを作成する
git initまたはgit clone URL


SQL小技集
https://qiita.com/ool/items/75da830e7373138c8125
UTCとJST
https://qiita.com/ool/items/6be9cc290c8ad9e0f5bc
今流行りの量子コンピューター
[量子コンピューター]Qisikitでアダマールゲートを実装する
https://qiita.com/ool/items/1a5041edddc11b14efc0
[Qiskitのアカウント認証の仕方]Qiskit IBMQ プロバイダー
https://qiita.com/ool/items/e80c1266cda68984a103
Qiskitの使い方
https://qiita.com/ool/items/2227d2d515caa5087752
[量子コンピューター]Qiskit Tutorials
https://qiita.com/ool/items/2a5038df1471635d442c

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

実務でよく使うGitコマンド一覧

git init
git clone
git remote
git pull
git fetch
git merge
git checkout
git branch
git status
git diff
git add
git commit
git log
git push
git reset
git rebase
git cherry-pick
git stash
git revert
git rm

追記: git-remind

コミット忘れ防止コマンド git-remind

【ペチオブ】実務で使うGit勉強会

株式会社ミライトデザインが主催するエンジニア向けオブジェクト指向ワーキンググループ「ぺちオブ」の【ペチオブ】実務で使うGit会にて学ばせていただきました。

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