はじめに
gitのアカウントを複数使って切り替えながら作業している場合に
本来pushしたくなかったアカウントでpushしてしまって事故ってしまうことがある。 ない。
そんな時のために、、、
マルチアカウント運用時の
- 事故の事前防止
- アカウント切り替えの設定
- 事故ってしまった時の対処
を備忘録的に残しておきます。
ターミナルでのgitブランチ&ユーザ名表示
ターミナルにブランチ名を表示する設定はよく記事で見かけますが、プラスしてユーザ情報もターミナル上に表示させることで、
今どのアカウントでgitを使っているのかがすぐわかるようになり事故を未然に防げる可能性が上がります。
手順
~/.bashrc
の中にコマンドを追加します。
# ユーザ情報を取得する関数
parse_git_user(){
# ターミナルにユーザ名じゃなくてアドレスを表示したい場合はこっち
# git config --get user.email
git config --get user.name
}
# git系の設定
source /usr/local/etc/bash_completion.d/git-prompt.sh
source /usr/local/etc/bash_completion.d/git-completion.bash
GIT_PS1_SHOWDIRTYSTATE=true
# コマンドプロンプトの表示変更
export PS1='\[\033[32m\]\u@\h\[\033[00m\]:\[\033[34m\]\w\[\033[31m\]$(__git_ps1)\[\033[00m\] ($(parse_git_user))\n\$ '
ちなみに\[\033[32m\]\
はbashのカラーコードの指定。
\[\033[00m\]
で元の色に戻している。
source ~/.bashrc
を忘れずに。
gitユーザの切り替えコマンド設定
アカウントが2つあるとして、
gsu1
とgsu2
のコマンドでアカウントを切り替えられるようにします。
手順
~/.bash_profile
の中にコマンドを追加します。
function gsu1func() {
git config --global user.name "[ユーザ名1]"
git config --global user.email "[メールアドレス1]"
git config --global user.password "[認証トークン1]"
}
function gsu2func() {
git config --global user.name "[ユーザ名2]"
git config --global user.email "[メールアドレス2]"
git config --global user.password "[認証トークン2]"
}
alias gsu1=gsu1func
alias gsu2=gsu2func
source ~/.bashrc
を忘れずに。
commitしたユーザ情報を書き換える
直前のコミットでやらかした時を想定します。
手順
- 書き換えたいユーザに変更しておく
gsu1
- commitのrebase
git rebase -i HEAD~1
- エディターが開くので
pick
からedit
に変更 - ユーザ情報をgitに設定中のユーザに書き換える
git commit --amend --reset-auther
- rebaseの修正を修了する
git rebase --continue
- リモートリポジトリに反映する
git push -f origin [branch名]
まとめ
ターミナルの色がカラフルになると作業モチベが上がるのでおすすめです。
※個人の意見です。諸説あります。