web-dev-qa-db-ja.com

GITフローで機能ブランチを完成させる

私の理解から、機能ブランチを作成する利点の1つは、コミットの大きなグループが開発ブランチにマージされた場所を簡単に確認できることです。

機能ブランチが完成したら、開発には不要になるため、機能ブランチを削除することをお勧めします。ブランチが削除された後も、グラフには「feature/my-fancy-feature」という注釈が付けられ、マージされますか?

19
Lea Hayes

「機能ブランチが完成したら、その機能ブランチは開発に不要になるため、削除することをお勧めします。」

機能ブランチの「破棄」と「マージ」の違い:

ここで「仕上げ」は曖昧な表現です。私があなたの質問を完全にカバーすることを確認するために、私はあなたが次のいずれかのケースを意味したと信じています:

(1)feature/my-fancy-featurediscardしたい場合:

git branch -d feature/my-fancy-feature

(2)feature/my-fancy-featuremergeするつもりなら:

git flow feature finish my-fancy-feature

「ブランチが削除されても、グラフにはまだ「feature/my-fancy-feature」という注釈が付けられ、マージされますか?」

「fast-forward-merge」と「non-fast-forward-merge」の違い

状況によって異なります(結果はgit-flowに依存しません)。 git logは、特定のブランチ名を提供しません(例:feature/my-fancy-feature)。メッセージのあるコミット履歴のみが表示されます。 fast-forwardマージとnon-fast-forwardマージの違いを思い出してください:

fast-forward-mergefeature/my-fancy-featureで行われたすべてのコミット履歴は残ります):

git merge

non-fast-forward-mergefeature/my-fancy-featureで行われたすべてのコミット履歴は失われます):

git merge --no-ff

Vincent Driessenの 記事 の次の図を参照してください。

enter image description here

更新

SourceTreeでnon-fast-forward機能を有効にするには、checkMenubar-> SourceTree -> Preferences -> Gitから見つけられる以下のグローバル設定オプション:

enter image description here

詳細については、SourceTreeの「ヘルプセンター」からの抜粋を見つけました。

マージ時の早送り動作を無効にします。つまり、受信ブランチに他の変更があるかどうかに関係なく、明示的なマージコミットが常に作成されます。これは、すべてのケースで明示的に別の開発ラインを維持したい場合に役立ちます。

お役に立てば幸いです。

19
melvynkim

いいえ、コミットメッセージのみが残ります。ブランチの名前を保持する場合は、必ずマージコミットに含めるか、マージコミットに関連する名前を明示的にタグ付けしてください。

あなたの最善の策は、コミットメッセージの外でこのデータを保持することについて心配するのをやめることです。機能ブランチをマージするときには、機能ブランチで作業が行われたことを気にする必要はありません。

4
meagar