私は git を使用したブランチ管理の細かい点をいくつか調べており、この記事に基づいていくつかの決定を下していました。
http://nvie.com/posts/a-successful-git-branching-model/
ここで、オリジンにリモートでmasterとdevelopment_branch. すべての開発者に関する限りdevelopment_branch、クローン元の主要な場所であり、安定したリリースがある場合にのみ、開発からマスターにマージします。
それを念頭に置いて、各スプリントを通過する必要があるストーリーがたくさんあるので、現在行っていることは、クローンdevelopment_branchを作成してから、取り組んでいるストーリー/機能の新しいブランチを作成することproduct_description_featureです。その後、このローカル ブランチが処理されるため、別のタスクを取得したり、何らかの修正を行う必要がある場合は、クリーンdevelopment_branchに戻り、そこからブランチすることができます。
ここで、このように動作するプロセスについて質問があります。現在、安全なオプションは次のプロセスのようです。
- クローン
development_branch - タスクの新しいブランチを作成します (
feature_aこの例ではそれを呼び出します) feature_aタスクが完了するまでブランチにコミットする- ローカルに切り替える
development_branch - 新しい変更を原点から引き下げます(通常はとにかく頻繁に行われます)
feature_aからへの変更をマージdevelopment_branchdevelopment_branchローカルをオリジンにプッシュ- 次のタスクのために新しいブランチを作成する
これで問題なく動作し、誰もが満足していますが、より定期的にプルしたい次のシナリオを考えてみましょう:
- クローン
development_branch - タスクの新しいブランチを作成します (
feature_bこの例ではそれを呼び出します) feature_bブランチにコミット- ブロッカーに気づき、最新の変更をプルする必要があります
- 切り替える
development_branch development_branchオリジンをローカルにプル- 切り替える
feature_b development_branchローカルからマージfeature_b- 完了するまで作業を続ける
これで安全で、誰もが満足しているように見えますが、切り替えてプルダウンし、切り替えてローカル機能ブランチにマージする必要があるかどうかはわかりません。development_branchだから私はここで過度に用心深いだけで、development_branchオリジンからローカルfeature_bブランチに引っ張るべきですか?
local を更新せずに変更を直接ローカルの機能ブランチに取り込むだけなので、これで問題ないようです。development_branch変更をプッシュする必要がある場合は、もう一度切り替え、プル、マージ、プッシュします。
それで、誰かがこれが良い習慣であるかどうかなどを確認できますか?
また、質問をあまり汚しませんが、これらの機能ブランチは各開発者のマシンにのみ存在するため、誰かがタスクを半分実行してから、他の誰かがそれを拾う必要がある場合はどうなりますか? そのブランチをオリジンにプッシュして、それを降ろしてから作業させることができますが、その後、さらにクリーンアップする必要があるため、この問題を解決する良い方法はないと思いますが、その方法を聞いてみたいと思います.他の人は、古い機能ブランチの荒れ地をリモートで作成することなく、問題を解決します。
他にもいくつか言及する必要があります。現在、ffwd マージを行っているところです。元の記事では、ffwd マージではないことについて言及していますが、膨大な量のリモート ブランチを作成せずにこれを行う方法がわかりません。コマンドラインではなく Tortoise GIT を使用していますが、実際には何も変わりません。