459

現在の追跡ブランチをオリジンにプッシュするように Git に指示するショートカットはありますか?
注:デフォルトのプッシュ動作を変更できることはわかっていますが、デフォルトの動作を変更しないアドホック ソリューションを探しています。

たとえば、feature/123-sandbox-tests私が使用するブランチにいるとします

git push origin feature/123-sandbox-tests

これは面倒です。次のようなショートカットを探しています

git push origin current # <- example, not working

git は current が であることを知っていfeature/123-sandbox-testsます。


編集: バージョン 2.0 以降、git のデフォルトの動作はより直感的な動作に変更されました。これは私が達成したかったことです。詳細については、この SO の質問を参照してください。

編集2:設定に関係なく、現在のブランチをプッシュできるため、ceztkoの回答が最良の回答です。

4

8 に答える 8

861

ドキュメントによるとgit push

git push origin HEAD
    A handy way to push the current branch to the same name on the remote.

だから私はあなたが必要だと思うのはgit push origin HEAD. git push -u origin HEADまた、まだオリジンにプッシュしていない場合は、ローカル ブランチに上流の追跡情報を設定すると便利です。

于 2014-01-04T14:22:39.553 に答える
47

ブランチを指定せずに「git push」のデフォルトの動作で同様の質問を確認する必要があります

基本的に、実行中の現在のブランチをプッシュするようにデフォルトの動作を設定する方法を説明していますgit push。おそらく必要なものは次のとおりです。

git config --global push.default current

その他のオプション:

  • Nothing :何もプッシュしません
  • matching : 一致するすべてのブランチをプッシュします
  • アップストリーム/追跡: 現在のブランチを追跡対象にプッシュします
  • current : 現在のブランチをプッシュします
于 2015-05-28T06:31:41.333 に答える
14

.bashrc 設定でそのようなエイリアスを使用します

alias gpb='git push origin `git rev-parse --abbrev-ref HEAD`'

コマンド$gpbでは、現在のブランチ名を受け取り、オリジンにプッシュします。

ここに私の他のエイリアスがあります:

alias gst='git status'
alias gbr='git branch'
alias gca='git commit -am'
alias gco='git checkout'
于 2016-07-21T09:59:55.577 に答える
9

それだけの価値があるため、究極のショートカットは次のとおりです。

.bash_profileには がalias push="git push origin HEAD"あるので、入力するたびpushに、現在のブランチにプッシュしていることがわかります。

于 2015-02-28T01:06:14.067 に答える
6

git 1.7.x を使用している場合は、次のコマンドを実行してリモート追跡ブランチを設定できます。

git branch --set-upstream feature/123-sandbox-tests origin/feature/123-sandbox-tests

git push次に、すべての変更をプッシュするために使用できます。より完全な回答については、ここで同様の質問に対する承認された回答を参照してください。

push コマンドを使用して現在のブランチのみをプッシュしたい場合は、プッシュ動作を上流に変更できます。

git config --global push.default upstream
于 2012-12-25T15:42:22.923 に答える
5

最も簡単な方法: git push -u origin feature/123-sandbox-tests1 回実行します。これにより、慣れ親しんだ方法でブランチがプッシュされ、ローカル構成でアップストリーム追跡情報も設定されます。その後、git push追跡されたブランチを上流のリモートにプッシュするだけです。

branch.<branch name>.mergeリモートブランチ名(この場合はローカル名と同じ)に設定し、オプションでbranch.<branch name>.remoteプッシュ先のリモートの名前(デフォルトはorigin)に設定することで、構成でこれを行うこともできます。構成を調べると、これらのいずれかが既に に設定されている可能性が高いためmaster、その例に従うことができます。

最後に、必ずpush.default設定を検討してください。デフォルトは「マッチング」で、望ましくない予期しない結果になる可能性があります。私が知っているほとんどの人は、現在のブランチのみをプッシュする「上流」の方が直感的だと感じています。

これらの各設定の詳細については、git-config の man ページを参照してください。

考え直して、あなたの質問を読み直すと、あなたはこれらすべてを知っていると思います。あなたが実際に探しているものは存在しないと思います。(未テスト)のようなbash関数はどうですか:

function pushCurrent {
  git config push.default upstream
  git push
  git config push.default matching
}
于 2012-12-25T15:43:05.790 に答える
1

ceztko's answer の助けを借りて、私はこの小さなヘルパー関数を書いて私の人生を楽にしました:

function gpu()
{
    if git rev-parse --abbrev-ref --symbolic-full-name @{u} > /dev/null 2>&1; then
        git push origin HEAD
    else
        git push -u origin HEAD
    fi
}

現在のブランチをオリジンにプッシュし、まだセットアップされていない場合はリモート追跡ブランチも設定します。

于 2015-03-25T13:42:14.140 に答える