如何在git中提交后自动推送?

ulu*_*ulu 72 git git-push githooks post-commit-hook

如何设置git在每次提交到本地仓库后自动推送到远程仓库(包括自动提供我的密码)?

Mar*_*air 129

首先,确保您可以在不提供密码的情况下手动推送.如果您要推送HTTP或HTTPS,则可以创建.netrc包含登录详细信息的文件,可以将用户名和密码添加到远程URL中.如果您使用的是SSH,则可以创建私钥没有密码的密钥对,也可以使用ssh-agent缓存私钥.

然后你应该创建一个包含以下内容的executable(chmod +x)文件.git/hooks/post-commit:

#!/bin/sh
git push origin master
Run Code Online (Sandbox Code Playgroud)

...如果你想推送到除了以外的遥控器origin,或者推送除了以外的分支,则自定义该行master.确保您使该文件可执行.

  • git push - all origin (4认同)
  • chmod + x .git/hooks/post-commit (3认同)
  • 无法让ssh-agent记住我的密码,所以不得不把它变成空的.希望我的妻子不会破解我的帐户:) (2认同)

i4h*_*i4h 28

如果您开始使用多个主分支,则可能需要自动推送当前分支.我的hook(.git/hooks/post-commit)看起来像这样:

#!/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 -eq 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 post-commit hook]"
        echo
        git push origin $branch_name;
    fi
fi
Run Code Online (Sandbox Code Playgroud)

它推送当前分支,如果它可以使用git symbolic-ref确定分支名称.

" 如何在Git中获取当前分支名称? "处理此方法以及获取当前分支名称的其他方法.

当您在预期会发生香肠制作的任务分支中工作时,每个分支的自动推送可能会令人不安(推送后您将无法轻松地进行折叠).因此钩子不会推动以定义的后缀结尾的分支(在示例"_local"中).


Col*_*n R 8

使用内容"git push"在.git/hooks目录中创建一个名为"post-commit"的文件,但是如果要自动提供密码,则需要进行修改.

  • 我为你做了. (4认同)

归档时间:

查看次数:

38837 次

最近记录:

6 年,1 月 前