git push
GitHub にコミットする前に、単体テストなどを実行するために、Gitの実際のコマンドにエイリアスを付けたいと考えています。
ここに私のconfig
ファイルがあります.git/
[alias]
push = !echo "custom push"
kk = !echo "hi" # => this works...
プッシュを無視しているようです。これは可能ですか?これが不可能な場合、代替手段はありますか?
git push
これは、実行したいものを印刷して実行しないという不快感と戦うために書いたものです。はい、それには理由があります (すべてのゴミをリモートにプッシュするべきではありません) が、私のリモートは GitHub フォークであり、そこにプッシュされたガベージに苦しむ可能性があります。
これはEugene Kay の.bashrc
ものに基づいています (私はそこから保持しましたが、私にとってはうまくいかなかっcd
た部分を削除しました)。which git
追加する.bashrc
か.zshrc
、味わうために:
function git() {
# Path to the `git` binary
GIT="/usr/bin/git"
# Sanity check
if [ ! -f ${GIT} ]
then
echo "Error: git binary not found" >&2
return 255
fi
# Command to be executed
command=$1
# Remove command from $@ array
shift 1
# Check command against list of supported commands
case $command in
"cd")
cd $(git rev-parse --show-toplevel)/${1}
;;
"push")
if [ -z "$1" ]
then
$GIT push || $GIT push -u origin $($GIT rev-parse --abbrev-ref @)
else
$GIT ${command} "$@"
fi
;;
*)
# Execute the git binary
$GIT ${command} "$@"
;;
esac
# Return something
return $?
}
プッシュ コマンドと競合するため、プッシュにエイリアスを設定することはできませんが、"pre-push" フックを使用してみることができます。詳細については、次のパッチを参照してください。
別のアプローチは、GitHub でpost-receiveフックを使用して、ユニット テストなどを実行し、変更を承認または拒否する統合サーバーに POST を実行するように構成することです。ただし、セットアップによっては、それは実用的ではない場合があります。
エイリアスを作成する代わりに、git の pre-commit フックを使用します。