9

問題は、マージしてタグ付けした後、正しいバージョン(で表示git describe)をどのように達成するかです。developmastermaster?

私は一般的なgitブランチを使用しています-master本番用です。ショーとマージした後、git describeショーが1.5オンになっているとしましょう。 そこで、で新しい注釈付きタグを作成すると、が表示されます。master,develop, master1.5-234-g1e894af
git tag -a 1.6git describe master1.6

しかし:git describe developそれでも表示されます1.5-somethingが、これは私にとっては奇妙なことです-それはと同じコミットを持っています-なぜGitはそれがまだバージョンmasterに属していると考えるのですか?1.5

私の頭の中にはこれ以上良いものはないので、マスターを開発にマージします。その後、開発1.6-2-...は許容できるバージョンを示しますが、もう1つの役に立たないマージコミットを生成し、「再帰によって作成されたマージ」について警告します。これも意味がないと思います。しかし、正しいバージョンを達成する方法は?

4

2 に答える 2

3

git の使い方に問題があるようです。にマージしていて、にマージdevelopしていmasterない場合、は自由に分岐できます — での変更はブランチには入りません。したがって、それらが同じコミットを持っているというあなたの声明は誤りです。VonC の図を使用すると、masterdevelopmastermasterdevelop

m(1.5)--m1--m2--m(1.6, master)
 \              / 
  d-------d----d (develop)

私が「m1」と「m2」とラベルを付けたコミットは、決して「開発」にはなりません。そのようなコミットがない場合 (マスターで作業を行っていない場合)、develop を master にマージするときは、早送りマージにする必要があります。その場合、それら同じコミットを持ち、すべてがあなたが説明したように機能します。

もちろん、解決策は、達成しようとしているワークフローによって異なります。

  • 個人的には、この時点でdevelopmaster から始まるブランチを削除して再作成するか、 に早送りして1.6、作業を続けるとdevelop次の構造になるようにします。

    m(1.5)--m1--m2---m(1.6, master)
     \              / \ 
      d-------d----d   d--d (develop)
    

    では、git describe実際には 1.6 に基づいていると見なします。

  • あなたの意図がdevelop継続的な開発ブランチでありmaster、時折の「リリース」ブランチである場合は、m1 や m2 などのコミットを作成しないようにする必要があります。あなたがする限り、何かが違うことを正確に伝えていgit describeます.

私はチームで git を使用する専門家ではありません。

于 2012-02-05T20:19:53.590 に答える
2

git describe「コミットから到達可能な最新のタグを見つける」ことを考えると、新しいタグがまだ設定されていないコミットgit describedevelop戻っても問題ないようです。master1.6

m(1.5)--m--m--m(1.6, master)
 \            / 
  d-------d--d (develop)          => git describe develop will return 1.5-xxx

マスターをマージして開発した後

m(1.5)--m--m--m(1.6, master)
 \            / \
  d-------d--d---d (develop)      => git describe develop will return 1.6-xxx

他の貢献者が に取り組んでいない場合は、予想されるタグを取り戻すために、の上にブランチをリベースdevelopすることを検討できます。( git リベース) developmaster

m(1.5)--m--m--m(1.6, master)
               \            
                d--d--d (develop) => git describe develop will return 1.6-xxx
于 2012-02-05T19:40:26.520 に答える