2つのリポジトリがあります。それらをrepo_aとrepo_bとしましょう。 repo_aをrepo_bにインポートしました
Getを実行すると、repo_a masterブランチが取得されます。 go getまたはrepo_bの別のコマンドを使用してブランチを開発する方法はありますか?
特定の各パッケージ(この場合はrepo_a)をgit pullしたくない
純粋なgo get
では不可能です。
Goは、パッケージマネージャーの中で最も最小限で実用的なアプローチを採用しています。 Goパッケージの複数のバージョンなどはありません。
しかし、この振る舞いには哲学が存在するため、これは最初の見方ほど悪くはありません。
パッケージの作成者として、安定版HEADの哲学を順守する必要があります。デフォルトのブランチは常に安定したリリース版のパッケージである必要があります。機能ブランチで作業し、解放する。
このアプローチはgo get
の制限によって強制され、Pythonインデント-言語設計によって強制される一種の哲学です。
何かをフォークしたり、新しい機能を試したい場合は、リポジトリを複製してから、目的のブランチに切り替えてgo build
を実行できます。この方法で本番環境に移行しないでください。
git clone <repo name>
cd <repo name>
git checkout <branch name>
go build
また、サードパーティのパッケージ管理ツールを使用できます。ただし、それらのほとんどは、ブランチではなくタグとリビジョンをサポートしています(機能ブランチをインストールする必要がないことが暗示されているため)。
gpm :
バージョンはリビジョン番号(git/Bazaar/Mercurial/svnリビジョンハッシュ)またはタグの形式でパッケージを指定できます。
gopkg.in
を使用すると、githubにリダイレクトされます。
次の2つのURLパターンがサポートされています。
gopkg.in/pkg.v3 → github.com/go-pkg/pkg (branch/tag v3, v3.N, or v3.N.M)
gopkg.in/user/pkg.v3 → github.com/user/pkg (branch/tag v3, v3.N, or v3.N.M)
go get gopkg.in/pkg.v3
はgo get github.com/go-pkg/pkg
を意味しますが、ブランチまたはタグv3.*
です。
詳細については、 こちら をご覧ください