131

git push originローカルで作成したブランチを初めてプッシュするときに、アップストリーム参照を自動的に設定したいと考えています。

については知っていますが、以前に使用したことがあるかどうか、またはアップストリーム参照を設定したgit push -uかどうかについて考える必要はありません。-u言い換えれば、まだアップストリームを持っていないブランチのプッシュに対して、git push自動的に の効果を持たせたいのです。git push -u

これは可能ですか?エイリアスまたはユーティリティ スクリプトが必要な場合は、問題ありません。

4

12 に答える 12

33

git config を使用してこれが可能だとは思わないので、bash でできることは次のとおりです。

[[ $(git config "branch.$(git rev-parse --abbrev-ref HEAD).merge") = '' ]] && git push -u || git push

現在のブランチにリモート追跡ブランチがある場合は、git pushそれ以外の場合は呼び出します git push -u

于 2013-09-26T02:15:13.507 に答える
18

@VonC と @Frexuz による回答は役に立ちますが、どちらのソリューションでもエラーが発生します。彼らの両方の答えを使用して、私にとってうまくいくものをまとめました。

    [alias]
    pu = ![[ $(git config "branch.$(git symbolic-ref --short HEAD).merge") = '' ]] && git push -u origin $(git symbolic-ref --short HEAD) || git push

これにより、アップストリーム (プロパティ) が定義されているかどうかに応じて、git push -u origin $BRANCHNAMEまたはのいずれかが実行されます。git pushbranch.$BRANCHNAME.merge

$HOME/.gitconfigコマンド ラインでこのエイリアスを入力するにはエスケープ コードが必要になるため、おそらくエディターを使用して正しいファイル ( (global)、.git/config(local)、または/etc/gitconfig(system) )に挿入するのが最も簡単です。

于 2016-04-14T22:02:08.377 に答える
4

これに対する唯一の完全に正直な答えは、「できません」です。

これのすべての回答と、同じことを尋ねる他の質問を読みました。

投稿されたすべての回答では、新しいブランチへの最初のプッシュで特別なパラメーターを渡す必要があります

于 2021-04-20T07:27:27.813 に答える
3

単に:

$ alias gush="git push -u origin HEAD"
于 2016-09-15T14:21:32.253 に答える
1

何らかの理由で、他の回答がどれもうまくいかない場合は、git pushこの bash 関数に置き換えて、必要に応じて正しいフラグでプッシュ要求を自動的に再送信できます。

gitpush()
{
    git push -v 2>&1 | # perform push command, pipe all output
    tee /dev/tty | # keep output on screen and pipe it forward
    (
     cmd=$(sed -n "s/^.*\(git push --set-upstream origin .*\)$/\1/p");
     [[ -n "${cmd// }" ]] && (echo "> $cmd"; eval $cmd);
    ) # if we get output that matches the command to perform, execute it
}

プッシュ出力の進捗部分を犠牲にしますが、それ以外はすべて期待どおりに機能します。

個人的には、JT Jobe の answerを使用します。

于 2020-09-29T17:49:24.163 に答える
1

これを含む便利なスクリプトで git 拡張機能を作成しました。

usage: git line push

Push the current branch and set an upstream if needed.

https://github.com/jvenezia/git-line

于 2017-05-03T14:14:12.500 に答える