8

git push現在のブランチを構成済みのアップストリームに (のみ) プッシュするために単純に使用するのが好きです。そのために、git config push.default upstream正確に正しいことを行うものを設定しました。

ここで、自動的に にプッシュする Gerrit に適したリモートをセットアップしようとしましたrefs/for/*

アイデアは次のようにしていました:

[remote "gerrit"]
        url = ssh://host:port/repo
        push = refs/heads/*:refs/for/*

git push gerrit入力して、git が現在のブランチのみを正しい参照にプッシュすることを期待したいと思います。

残念ながら現在、git はすべてのローカル ブランチを Gerrit にプッシュしようとしています。- 上記のように現在のブランチのみをプッシュするように git に指示する方法はありますpush.defaultか?

アップデート:

  • Git プッシュは単一の refspec のみを使用できます。
  • コマンド ラインで明示的な refspec が指定されている場合は、これが使用されます。
  • コマンドラインで何も指定されていない場合、リモートで定義されたものが使用されます。
  • リモートでも何も指定されていない場合は、push.default のみが考慮されます。

Gerrit の場合、ブランチが現在のブランチである「branch:refs/for/branch」のような refspec が必要です。

質問:

  • push.default=upstream が行っていることと同等の明示的な refspec はありますか?
  • git pushプレーンを自動的に正しい参照/参照用にプッシュするように git を構成する方法はありますか?

現在、私が見つけた最良の方法は、ここで提案されているように、すべてを別のスクリプトにラップすることです。しかし、適切なrefspecだけでは不可能だとはまだ確信していません。

4

3 に答える 3

1

ソースによると、Git は現在push.default = upstream、明示的な名前を含む明示的な refspec を生成することで実装しています。

現在、単一のジェネリック refspec でその動作を指定する方法はないようです。明示的な refspec を構築するスクリプト (ここで提案されているような) が今のところ唯一の方法です。

于 2013-01-19T21:36:22.910 に答える
-1

コマンドを使用して、現在のブランチのみをリモート リポジトリに送信するように git を構成できますgit config --global push.default current

push.default に渡すことができるその他のオプションは次のとおりです。

nothing - do not push anything.
matching - push all matching branches. All branches having the same name in both ends are considered to be matching. This is the default.
upstream - push the current branch to its upstream branch.
tracking - deprecated synonym for upstream.
current - push the current branch to a branch of the same name.

これらの設定は、コマンドで確認できますgit help config

更新: ただし、マニュアル ページをより注意深く読むと、push.default「コマンド ラインで refspec が指定されていない場合、リモートで refspec が構成されていない場合、および refspec が、コマンドライン"。そのため、refspec を指定する場合はスクリプトを使用して現在のブランチのみを送信する必要があると思います。

于 2013-01-15T20:27:06.560 に答える