如何配置Git的特定上游推送改装规范?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (24)

我正在寻找一种方法,使必要的Git命令相对简单的用户谁可能是新的Git。

我目前用于启动新特性分支的命令本质上是(假设gerrit是origin)):

git checkout baseline
git pull
git checkout -b work1234
git push -u origin work1234

这将启动一个新的工作包。work1234分叉baseline,最后的推送在Gerrit中创建分支并设置上游。所以.git/config看起来像是:

[branch "work1234"]
        remote = origin
        merge = refs/heads/work1234

我可以用以下方法手动完成:

git push origin work1234:refs/for/work1234

我想做的是找到一些方法来建立.git/config所以一片平原git push将当前分支推送到Gerrit所需的遥控器上的改装规范。我看了以下几点git config领域:

  • branch.<name>.*-似乎没有任何具体的选项来设置推送配置
  • push.default-我有点想upstream这里
  • remote.<name>.push-我试过了refs/heads/*:refs/for/*在这里但是git push总想推本例中的本地分支,而我只希望当前支部

如果我不能让Git自己完成这个任务,我将编写一个小的包装脚本,它完全指定了respecs。然而,如果git能够推动到正确的地方,那就更好了。

提问于
用户回答回答于

最后我写了一个新的git-submit

#!/bin/sh -e

if [ -z "$1" ]; then
    REMOTE=origin
else
    REMOTE=$1
fi

BRANCH=`git symbolic-ref HEAD`
case $BRANCH in
    refs/heads/*)
        BRANCH=`basename $BRANCH`
        ;;
    *)
        echo "I can't figure out which branch you are on."
        exit 1
        ;;
esac

git push $REMOTE HEAD:refs/for/$BRANCH

我把这个放进去了/usr/local/libexec/git-core/git-submit现在有一个命令可以将新代码提交给Gerrit以供审查:

$ git submit

如果不是origin远程,然后使用git submit <remote>视情况而定。

用户回答回答于

我发现了两个选择:

1)看看我做的一个项目,GGH:https://github.com/hobs/gGH

2)可以在遥控器中配置默认的Push respec。我只知道如何使用硬编码的远程分支来完成这个任务,仍然试图找出如何通配符远程重构规范,以便它总是推送到您正在跟踪的遥控器上:

[remote "origin"]
    fetch = +refs/heads/*:refs/remotes/origin/*
    url = ssh://gerrit/repo
    push =  HEAD:refs/for/master

扫码关注云+社区