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
.确保您使该文件可执行.
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"中).
归档时间: |
|
查看次数: |
38837 次 |
最近记录: |