私は 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_branch
development_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 を使用していますが、実際には何も変わりません。