私はGitをGerrit Code Reviewと設定しています.Gitを初めて使うユーザーにとって必要なGitコマンドを比較的簡単にする方法を探しています。Gerritで特定のアップストリームプッシュrefspecを設定するには?
git checkout baseline
git pull
git checkout -b work1234
git push -u origin work1234
これは、いくつかのbaseline
から分岐した新しいワークパッケージwork1234
を開始し、最後の一押しは、ブランチを作成します。
あり、本質的に新機能ブランチを開始する私は現在持っているコマンド(ヘリットがorigin
であると仮定した場合)ゲリットで、上流を設定します。特別refspecにプッシュするレビュー用
[branch "work1234"]
remote = origin
merge = refs/heads/work1234
さて、ゲリットが望んでいる新しいコミット、例えばrefs/for/work1234
:だから.git/config
は次のように見えます。私は何をしたいのは、プレーンgit push
がヘリットが必要で、リモートでrefspecに現在のブランチをプッシュするように.git/config
を設定するにはいくつかの方法を見つけることである
git push origin work1234:refs/for/work1234
:私は手動でこれを行うことができます。私は、次のgit config
分野を見てきました:
branch.<name>.*
からpush.default
refspecプッシュを設定するための任意の特定のオプションを持っていないようです - 私は、ソートのここupstream
remote.<name>.push
をしたい - 私はrefs/heads/*:refs/for/*
を試してみましたここにあるが、git push
はいつも押してほしいすべてこの場合、私はちょうどを望んでいる間にブランチ
Gitが単独でこれを行うことができない場合は、refspecsを完全に指定する小さなラッパースクリプトを作成します。しかし、Gitがネイティブに適切な場所にプッシュできるのは良いでしょう。私は/usr/local/libexec/git-core/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
:
$ git submit
ヘリットがある場合
もし私がいつも固定の行き先、例えば 'refs/for/master'にプッシュしたいのであればもっと簡単なgit-onlyの解決策がありますか? (あなたの問題の単純なバージョンを尋ねる)[[Here's](http://stackoverflow.com/questions/29664305/equivalent-of-branch-name-merge-for-git-push)私の質問。 – Pradhan