82個の機能ブランチがぶら下がっている になりたくないので、マスターにマージしたらすぐに機能ブランチを単純に削除することの潜在的な欠点は何か疑問に思っています。
ワークフロー:
git co -b feat-xyz
hack hack
git ci
hack some more
git ci
git co master
git merge feat-xyz
smoke test
git br -d feat-xyz
ここに問題はありますか?
マージ後の削除は通常の方法です。これが理由です git branch -d
は、ブランチが削除される前に完全にマージされていることを確認します。
ブランチを保持する理由として考えられるものがいくつかあります。実稼働環境にバグが戻ってきた場合に備えて保持したい場合や、履歴を記録したい場合があります。
どちらの場合でも、ブランチのヘッドを削除する前にタグ付けするオプションがあります。タグは、いくつかの小さな違いを除いて、コミットへのポインタであるという点でブランチのようなものです:1)ポーセリンは、通常、チェックアウトでgit show-branchやtab-auto completeなどの探索コマンドでタグを表示しません、2) 1つをチェックアウトすると、切り離された(非参照)HEAD 3)になります。 " tagging message "を残すことができます。これにより、タグがコミットのようなオブジェクトストア内のオブジェクト。
この方法で履歴を保存し、バグ修正が必要になった場合は、修正のためにマスターから新しいブランチを作成することをお勧めします。
マージ後に削除しますが、常にgit merge --no-ff
、ブランチの履歴がグラフに表示されるように、高速転送を回避します。私は、機能ブランチが開発ブランチから離れた場所と、それが戻ってきた場所の歴史を持ちたいです:
これは、Vincent Driessenによる 成功したGit分岐モデル から取られています。これは、ほとんどのプロジェクトに適用するgitで使用する非常に素晴らしいワークフローです。
機能ブランチを少しの間維持したい理由は2つあります。
実際には、ほとんどの場合、マージ後に削除するだけで十分です。
典型的なワークフローは
// Create new branch
$ git checkout -b myfeature
// and then do some changes and commit them
// Switch to master branch
$ git checkout master
// Merge myfeature to master. --no-ff will always keep branch information.
$ git merge --no-ff myfeature
// Delete myfeature branch
$ git branch -d myfeature
// Push the changes
$ git Push Origin master
私はそれが典型的なワークフローだと思います(マージ後に削除する)
編集だから、マージよりも、少なくとも短命のブランチについては、マスターにリベースすることだと思います。その後、線形の変更履歴になり、ブランチ全体がメイントランクの一部になります。この場合、すべての変更がそこにあるので、明らかにコピーは必要ありません。