仕事メモとか

仕事中に調べた情報とか知ったことをメモしています。
unixコマンド, vim, oracle, putty, postgresql, bash, EXCEL, python, SQL全般 など。
最近は tableau, movabletype とかも触ったりしています。
雑な読書感想とかはこちら

カテゴリ: git


IntelliJ で、gitを何度も作るときに簡単にしたスタートコマンド

はい、gitになって管理が堅牢になったんですが、毎回ブランチ立てるのは面倒。
でも必要なことなので、ブランチ作るの簡単にしたコマンドを用意しました。

●git_startコマンド作成

#!/bin/sh
set -eu

PROG_ID="$1"
FEATURE="${2:-test_program}" #ブランチ名

# masterの最新を取得
git checkout master 1>/dev/null 2>/dev/null
git pull 1>/dev/null 2>/dev/null

# ブランチ名を自動作成してブランチ作成
BRANCH_NAME="feature/${PROG_ID}_${FEATURE}"
git checkout -b ${BRANCH_NAME}
git push --set-upstream origin ${BRANCH_NAME}

echo "created complete. ${BRANCH_NAME}"


●git_startコマンドを自分のbinのところに置く
${HOME}/bin
に、git_startを配置

●git_startに実行権限を付ける
chmod 775 git_start

●自分の作ったbinにPATHを通す
.bash_profile

export PATH="~~"に足す
その後、
source ~/.bash_profile で再読み込み

●IntelliJのターミナルで起動
source ~/.bash_profile でこちらでも再読み込み
git_start {プログラム番号} {プログラム名とか}


こうすることで「feature/」のスペルってなんだっけ? って毎回思わずに済みます。
(そして打たないので、またfeatureのスペルを忘れます)


gitコマンドで、svnのinfoみたいなものが欲しかった(過去形

はい、大体gitに移行しているのですが、地味に困ってるのが、
他メンバーに該当ファイルを伝えるときにいい方法が無いという点です。
いや、あるのかもしれないんですけど。

svn時代には、
svn info {ファイル名}
とかで指定していたのですが、どうも探しても見当たらないのです。
いや、あるのかもしれないんですけど(2回目)


ということで、色々考えたのですが、もう作っちゃえばいいじゃないの、と。

●前提
1.作業は殆どローカルではなくサーバー上で行うため、unixコマンドみたいにしたい
2.ソース管理はgitlabなので、このURLを直で渡せれば幸せ

・・・これで考えてみたら、今いる場所をechoして置換すればいいんじゃね? ってなりまして。

こんな感じにしました。
例によって、頭はあんまりよくありません。


git_infoコマンド

-------------------------ソース--------------------------
function error {
if [ "$1" != "" ]; then
echo "error: $1"
else
echo "Usage: $0 "
fi
exit 1
}


[ $# -gt 2 ] && error

DIR="$(pwd | sed 's/{自分が作業するgit管理下}//g' | sed 's/{サーバー上の本番git場所}//g' )"
echo "{管理してるgitlabのURLで固定部}${DIR}/${1}"

-------------------------ソース--------------------------


gitlabでスペースの変更だけを非表示にしたい

変更を見ていた時に、半角スペースだけが取れただけ、みたいな変更を全部表示すると、
本当に見たい変更内容が見えづらくなります。

ということでこのボタンを押しましょう「Hide whitespace changes」。
これを押すとスペースの変更のみの表示は出なくなります。

ちなみにURLを見ると、後ろに「?w=1」が付いてるので、これで制御しているようです。


gitで「Squash commits when merge request is accepted」っていうコマンドが増えていた


gitlabを使っているのですが、マージリクエストの作成の部分で見慣れないチェックボックスが増えていました。

Squash commits when merge request is accepted

要するに、作成中にコネコネしたときのコミットなどをひとまとめにしてマージ。
だからマスターに合流した後はコミットは1つになる。

という代物。

確かに作っているときに、後から忘れたーとか、
コメントもうちょっと追加しておこう、
みたいなもの1つ1つをレビュワーが追う必要はなく、
コミットが多段階的になっていない方が幸せ。

なもんで、多段階コミットが見る人にとって不必要であれば、
squashしましょう、という感じでした。


参考:
https://www.granfairs.com/blog/cto/git-merge-squash
http://changesworlds.com/2015/03/git-rebase-squash/


git br でブランチの内容を出そうとしたら、文字化けした

git brと打つと、内部的には以下のようにしていました。

git branch -V --color

ただ、コミット時の文字コードをいつの間にか変更されていまして。
そうすると、logの出力などはi18nの設定で上手く行けたのですが、branchのちょい見せのときには、
上手く動きませんでした。


~/.gitconfig

[i18n]
# コミットコメントはUTF-8
commitencoding = UTF-8
# git-logコマンドなどの出力はEUC-JP
logoutputencoding = EUC-JP


ということで、解決方法としては、エイリアスの設定で文字コード変換するという形にしました。


●変更前

~/.gitconfig
[alias]
co = checkout
br = branch -v --color


●変更後

~/.gitconfig
[alias]
co = checkout
br = !git branch -v --color | nkf -e


何も指定しないと、git~・・・というエイリアスですが、
!を使うと、フリーにコマンドが入れられます。

なので、!git ・・・の後にパイプでコマンドをつなげられるようになります。

↑このページのトップヘ