5

IT 部門の例に従っています。このコマンドが正確に何をしているのかを理解したいと思います。

git fetch origin +refs/changes/*:refs/remotes/origin/changes/*

参考までに、これは継続的インテグレーション (CI) ツールの一部であり、テストするコードをチェックアウトする手順の一部です。CI ビルドは、次のように Gerrit にプッシュすることでトリガーされます。

git push origin HEAD:refs/for/master

二次的な質問ですが、変更を開発ブランチにプッシュしたい場合は、次を使用できますか?

git push origin HEAD:refs/for/development
4

2 に答える 2

2

私はゲリットについて何も知りません。しかし、あなたが言及した最初の git コマンドについて言えます。

あなたが言及したコマンドの最後の部分は、refspecs と呼ばれます。それらが何をするかについては、Pro Git book の Refspec の章で読むことができます。要するに:

git fetch origin +refs/changes/*:refs/remotes/origin/changes/*

これは、リモートの場合、リポジトリ内の git ディレクトリ (つまり、標準リポジトリと通常のベア リポジトリ)originにあるブランチのコミットをフェッチすることを意味します。これらのブランチをローカル ディレクトリにコピーします。最後に、通常のフェッチ動作に従って、それらのブランチに属するコミットをディレクトリにコピーします。originrefs/changes.git/refs/changes/refs/changes.git/refs/remotes/origin/changes/.git/object

標準のrefspecは私には少し奇妙に見えます+refs/heads/*:refs/remotes/origin/*refs/changesこれは標準の Git ディレクトリではありませんが、おそらく Gerrit のものです。構造は、ローカル リポジトリのブランチのrefs/remotes/origin/changesように見えます。changes

于 2013-06-30T07:02:10.653 に答える