0

git とグッド プラクティスについていくつか質問があります ...

git リポジトリの状態は次のとおりです。

V1.0  :       B.A--B.B
V1.1  :      /  C.A--C.B
            /  /
master: A--B--C--D

私はマスターを持っており、1.0 と 1.1 の 2 つのバージョンがあります。

新しい機能を開発する必要があり、V1.1 とマスターの 2 つのブランチに適用する必要があります。

それを行うためのより良い方法は何ですか? 機能ブランチを作成する必要があると思いますが、どれに基づいていますか? マスターまたは V1.1?

開発が検証されたら、最適なマージ戦略は何ですか? マージしますか?チェリーピック ? リベース?

機能ブランチは上流にプッシュされます。これに取り組むのは私だけではないからです。また、複数のコミットがあります。

ご協力いただきありがとうございます !


機能ブランチが master に基づいている場合、次のようになります。

V1.0  :       B.A--B.B
otherbranch :/  C.A--C.B
            /  /
master: A--B--C--D
                  \
topicbranch:       E--F--G

機能の開発が完了したら、master と topicbranch を簡単にマージして、新しい機能を master に追加できます。

しかし、コミット E、F、および G を他のブランチ (CB の直後) に追加する方法は? と思うところです

checkout otherbranch;
git merge topicbranch;

コミット D も追加されるため、機能しません。

4

2 に答える 2

0

一般的に言えば、マスター ブランチは新機能の開発用です。だからあなたは

git checkout master HEAD^
git branch --track topicbranch

topicbranch新しい機能の開発に使用します。このようにして、マスターブランチが更新されるたびに実行できます

git checkout topicbranch
git pull

アップストリーム/メインストリーム ブランチからブランチに更新をプルするのはそれほど困難ではありません。

あなたが提案していることの大きな問題は、特定の「バージョン」が変更されるべきではないということです。それを参照するようなタグを付けて開発履歴に置く必要がありv1.0ます。別のトピック ブランチからも新しいトピック ブランチにアクセスできるようにするには、次のようにします。

git checkout otherbranch
git merge topicbranch

の上流をotherbranch単に として扱いtopicbranchます。


経験則として、常に を使用git mergeしてリポジトリ内の 2 つの ref を結合し、これらのそれぞれを保持する個別のブランチを作成する必要があります。これは、git mergeすべてをよりクリーンにする多くの機能があるためです。のようなものgit cherry-pickは、1 つのブランチに変更をコミットした後にのみ、間違いを犯したり、ひらめきを経験したりする場合にのみ使用されます。

于 2013-12-17T14:56:39.457 に答える