web-dev-qa-db-ja.com

開発ブランチをgit pullするにはどうすればよいですか?

ビューの開発バージョンに切り替えようとしています。リポジトリ 手順 機能し、git cloneビューを作成できました。

ただし、git branch -aを使用して使用可能なブランチをリストすると、* 7.x-3.xのみが表示されます。

そして、プルで「dev」ブランチを追加しようとすると、エラーが返されます。

$ git pull Origin 7.x-3.x
From http://git.drupal.org/project/views
 * branch            7.x-3.x    -> FETCH_HEAD
Already up-to-date.
$ git pull Origin 7.x-3.x-dev
fatal: Couldn't find remote ref 7.x-3.x-dev

何が悪いのですか?

5
xtian

私が行った場合

git clone --recursive --branch 7.x-3.x http://git.drupal.org/project/views.git

その後

git branch -r

私は得る

Origin/4.6.x-1.x  
Origin/4.7.x-1.x  
Origin/5.x-1.x  
Origin/6.x-2.11-security  
Origin/6.x-2.x  
Origin/6.x-3.x  
Origin/7.x-3.x  
Origin/8.x-3.x  
Origin/HEAD -> Origin/7.x-3.x  
Origin/d7v3ui  
Origin/master  

すべてのリモートを取得するには、再帰フラグが必要だと思います。あなたがそれをしたかどうかはわかりませんが、迅速なgit fetchはリモートのリストを更新します。

git pull Origin 7.x-3.x-dev
fatal: Couldn't find remote ref 7.x-3.x-dev
Unexpected end of command stream 

これは単に命名規則によるものだと思います。現在の開発者はHEADを知っています。

git pull Origin 7.x-3.x
From http://git.drupal.org/project/views
 * branch            7.x-3.x    -> FETCH_HEAD
Already up-to-date.

(タグではなく)ブランチは、そのdrupalバージョンの「dev」と見なすことができると思います。

お役に立てれば。

5
Christian

私はGitのエキスパートではありませんが、プロジェクトページにリストされているdevブランチのすべてのリリースは7.x-3.xブランチに直接作成されています。もちろん、自分のブランチを自分のニーズに合わせてローカルに作成することは自由ですが、drupal.orgにプッシュされたすべてのリリースを含むmaster- likeブランチは、常に7.xになります。 -3.xブランチ。

タグ付きリリースのいずれかに切り替える場合は、git tagを使用してすべてのリリースのリストを取得します。次に、7.x-3.1リリース(たとえば)をチェックアウトするには、git co 7.x-3.1を使用します。

このリリースのコードを編集する場合は、git checkout -b mycustombranchを使用して、(Gitが説明するように)新しいブランチを作成できます。

6
Patrick Kenny

Drupal.orgからViewsモジュールの7.x-3.xブランチのリポジトリ(つまり、Viewsモジュールの開発スナップショット7.x-3.x-dev)を初めてプルする方法は、次のコマンド:

git pull git clone --recursive --branch 7.x-3.x http://git.drupal.org/project/views.git

その後、Viewsモジュールのローカルリポジトリを最新の状態に保つ必要がある場合は、次のコマンドを実行する必要があります。

cd views
git reset --hard
git pull Origin 7.x-3.x

明確にするために、Drupal開発スナップショットはgitブランチから作成されますが、Drupalリリースはgitタグから作成されます。gitの名前ブランチは、Drupal -dev部分のない開発スナップショットの名前です。この場合、開発スナップショットは7.x-3.x-devで、gitブランチは7.x-です。 3.x。
さらに、Drupalリリースの作成に使用されるgitタグは、特定のスキーマに従う必要があります。7.x-3.0(または7.x-3.1-beta3)と同様のタグは、 7.x-3バージョンのモジュールの場合、その開発スナップショットの名前は7.x-3.x-devです。Drupal.orgでは、Drupal release from a beta-releaseに似たgitタグ、またはtest-branchに似たgitブランチからのDrupalスナップショット。

3
kiamlaluno

編集:指摘したように、質問は「他の回答で部分的に示されている「どのようにGitを開発ブランチをgit pullするか」です。ただし、回答の重要な2番目の部分には、Drupal -dev命名規則の翻訳を含める必要があります。コマンド$git branchまたは$git tagを使用しても表示されないからといって、-devはモジュールのメインページの「開発リリース」の表にはっきりと示されています。これは、これを正当な理由で明確化しようとする私の試みですが、決して権威ある定義ではありません。

意味があります-devはおなじみのラフドラフトと同等です執筆の比喩。記事では、ローカルリポジトリでの「独自のGitリポジトリビューア」の設定について説明しています( cloud でホストしないことを好む開発者向け)。

「最新の安定バージョンまたはマスターバージョンのいずれかを選択できますが、開発者が積極的に取り組んでいるため、マスターバージョンにはバグがある可能性があることに注意してください。」 PHPMaster

これで、「マスターバージョン」での active development の規則を説明する決定的なステートメントがあります。そして、これが私がこの投稿で取り組んできた主要な問題です:規約(開発者規約、プログラミングのベストプラクティス、または The Drupal Way )をgitアプリケーションの操作と使用。

さて、私が脱線するとき、あなたは少しの間私と一緒に耐えなければなりません。私の初心者のgit-ucationでは、「マスター」が開発者の命名規則でもあるのか、それともgitアプリケーション自体に組み込まれているのかわかりませんでした。そして、ここで私は、この宝石を見つけるために、メンテナーサイトgit-scm.comでのサイト検索に目を向けました。

git remote addコマンドによって自動的に書き込まれるデフォルトの場合、Gitはサーバー上のrefs/heads /の下にあるすべての参照をフェッチし、それらをローカルのrefs/remotes/Origin /に書き込みます。したがって、マスターがある場合サーバー上のブランチ、ローカルでそのブランチのログにアクセスできます... " git-scm

マスターブランチがある場合?これは、「すべての」gitリポジトリに「マスター」があることを示唆するものではありません。幸いにも、この謎は自分のテストリポジトリを作成することですぐに解決しました。その後のStackoverflowの検索で、これは技術的に正しいことが確認されました。 any コミットのない新しいgitリポジトリには master ブランチ:

「今、git initを実行した後でもマスターブランチがないのは、コミットがないためです。最初のコミットを作成すると、マスターブランチが作成されます。」 stackoverflow: "致命的:有効なオブジェクト名ではありません: 'master'"

メンテナサイトで、コミットなしでリモートリポジトリを追加するのは奇妙な例ですが、 nth 程度のOzのカスタマイズでは既知の危険があります。

今、私が受け取った有用なアドバイスをこの時点まで返します。キアムラルノは指摘し、

「Drupal開発スナップショットはgitブランチから作成され、Drupalリリースはgitタグから作成されます。」 gitタグの代わりにgitブランチを試してください。」

それでも、私がこれから言おうとしていることはまだ言いません。 Drupalの-devブランチをDrupalでホストされているgitブランチの "master"ブランチから作成された "開発スナップショット"として理解できるようになりました.org。-devブランチラベルは、ブランチコマンド出力に存在しません自分でそこに配置しない限り、ローカルクローンリポジトリ。これも最近テストしました。現在の作業中のブランチに、同じ名前のリモートマスターブランチとは異なるラベルを付けると便利なためです。

私はgitバージョンを使用することを選択し、gitを使用していくつかのモジュールの独自の-devブランチを作成して、ViewsモジュールとDraggableviewsモジュールの相互作用をトラブルシューティングしました。 Kiamlalunoが指摘するように、「開発リリース」の表にあるtarファイルとgzipファイルはスナップショットです。したがって、理由により、それらは常にmasterブランチよりも古いです。


別の奇妙な出来事で、これはウィキペディア曖昧さ回避ページからのスナップショットの定義です、

スナップショット:「ソフトウェア開発における リビジョンコントロール の目的で特定の時点であったソースコードリポジトリのビュー。」 ウィキペディア

Wikiの記事やウィクショナリーではなく、「ソースコードリポジトリ」のこの定義を見つけるのは皮肉なことですが、曖昧さ回避ページに隠れています。皮肉なことではありません。なぜなら、定義は離れた場所に隠されるべきだからです。むしろ、これは印刷用語 Widow を思い起こさせます。これには、独自のwiki記事ページと 辞書エントリ があります。 、gitの「マスターブランチ」、またはDrupalの「-devブランチ」とは異なり(この失敗の時)。

2
xtian