git、github
プロンプト変更
いままで公式(なのかな?)のプロンプトと補完を使ってた
→ git/contrib/completion at master · git/git
けど、偶然もっといい見た目のをみつけたのでそっちにする
→ magicmonty/bash-git-prompt: An informative and fancy bash prompt for Git users
- 参考までに...
比較
それぞれの参考的なサイト
git-prompt.shの参考 : git-completionとgit-prompt導入用スニペット(Bash向け) #Linux - Qiita
bash-git-promptの参考 : bash-git-prompt でレスポンスを改善するための設定メモ #Git - Qiita
mainブランチに直接pushを禁止する
ブランチのsetting->branchで設定できる。Lockにチェックを入れる
参考:GitHubでブランチ保護を有効にする #Git - Qiita
実際にやってみるとエラーになってくれる
✔ ~/documents/RR-automate [main ↑·1|⚑ 3]
17:19 $ git push origin main
Enumerating objects: 5, done.
Counting objects: 100% (5/5), done.
Delta compression using up to 12 threads
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 342 bytes | 24.00 KiB/s, done.
Total 3 (delta 2), reused 0 (delta 0), pack-reused 0
remote: Resolving deltas: 100% (2/2), completed with 2 local objects.
remote: Bypassed rule violations for refs/heads/main:
remote:
remote: - Changes must be made through a pull request.
remote:
remote: - Cannot change this locked branch
remote:
To github.com:tontoroRR/RR-automate.git
1c63c8b..f88bf9c main -> main
git aliasに引数渡したい、
あるブランチが今のブランチにすでにマージ済みかどうかを確認する方法を調べたところ、下の方法でできることがわかった
$ git merge-base --is-ancestor (確認したいコミットID) HEAD
参考:(git) 指定したコミットが含まれるか確認する #Git - Qiita
長いのでaliasにしたいと思い何も考えず以下のようにした
alias config alias.in "merge-base --is-ancestor $(git log -1 --pretty=format:$h $1) HEAD"
けどこれはエラーになる、だめです
ちょっと調べたところ、こうするとうまくいった
alias config alias.in '!git merge-base --is-ancestor $(git log -1 --pretty=format:$h $1) HEAD #'
参考:command - Git alias with positional parameters - Stack Overflow
あたまの!
はそれ以降をgitのコマンド(?)として読むのではなく、shellで実行できる何かとして処理するといった意味らしい
最後の#
で引数以降が重複して渡されないようにコメントアウトしている
もし#
がないとgit in some_branch
は次のように解釈される
$ git merge-base --is-ancestor $(git log -1 --pretty=format:%h some_branch) HEAD some_branch
引数が$(git ~~) HEAD some_branch
と三つになる --is-ancestorは引数を二つとるのでエラーとなる
そこで#
をつけるとこうなる
$ git merge-base --is-ancestor $(git log -1 --pretty=format:%h some_branch) HEAD # some_branch
そう、some_branchがコメントアウトになる
引数の渡し方がわかんなかったときはbashの関数定義してshellのaliasつかおうとしたが、git補完できなかったので早々に却下(やる方法はあると思うけど探すのめんどいし、今から.bashrcに入れるのもめんどいし、一番イヤなのはgit-completion.shと二重になること、とにかくイヤ)
git aliasだととくに何もしなくてもgit-complete.shを読み込んでおけば補完もしてくれてとても便利