如何在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

上一篇: How to automatically push after committing in git?

下一篇: git ahead/behind info between master and branch?