如何在git中提交后自动推送?
在每次提交本地回购后,如何设置git自动推送到远程回购(包括自动提供密码)?
首先,确保您无需提供密码即可手动推送。 如果您正在推送HTTP或HTTPS,那么可以使用登录详细信息创建.netrc
文件,或将您的用户名和密码添加到远程的URL中。 如果你使用的是SSH,你可以创建一个私钥没有密码的密钥对,或者使用ssh-agent
来缓存你的私钥。
然后,您应该在.git/hooks/post-commit
中创建一个包含以下内容的文件:
#!/bin/sh
git push origin master
...如果您想要推送到除origin
其他远程位置,或者推送除master
其他分支,请自定义该行。 确保你使该文件可执行。
如果您开始使用多于主分支,则可能需要自动推送当前分支。 我的钩子看起来像这样:
#!/usr/bin/env bash
branch_name=`git symbolic-ref --short HEAD`
retcode=$?
non_push_suffix="_local"
# Only push if branch_name was found (my be empty if in detached head state)
if [ $retcode = 0 ] ; then
#Only push if branch_name does not end with the non-push suffix
if [[ $branch_name != *$non_push_suffix ]] ; then
echo
echo "**** Pushing current branch $branch_name to origin [i4h_mobiles post-commit hook]"
echo
git push origin $branch_name;
fi
fi
它推送当前分支,如果它可以用git symbolic-ref确定分支名称。
“如何在Git中获得当前分支名称?” 处理这个和其他方式来获取当前分支名称。
在任务分支中工作时,每个分支的自动推送都会令您感到不安,因为您希望发生一些香肠制作(推送后您将无法轻松进行分档)。 所以钩子不会推送以定义的后缀结尾的分支(在本例中为“_local”)。
在.git / hooks目录中创建一个名为“post-commit”的文件,内容为“git push”,但如果你想自动提供密码,那么需要进行修改。
链接地址: http://www.djcxy.com/p/19497.html