11

この記事を読んだ後、メインブランチから私の機能ブランチに変更を収集するためにリベースすることは理にかなっています: Gitワークフローとリベースとマージの質問

clone the remote repo
git checkout -b my_new_feature
..work and commit some stuff
git rebase master
..work and commit some stuff
git rebase master
..finish the feature
git checkout master
git merge my_new_feature

これは、機能ブランチが私のマシンに対してローカルであり、履歴を好きなように書き換えることができる場合にうまく機能します。

しかし、機能ブランチで他の誰かとコラボレーションした場合はどうなりますか。機能ブランチがリモートリポジトリに保持されているので、メインブランチから機能ブランチに最新の変更を取得するにはどうすればよいですか?

だから私たちはマージしますか?または、これを行うための別の巧妙なGITメソッドはありますか?

前もって感謝します!

4

2 に答える 2

2

まったく異なるワークフローに切り替えることなく、ケースに解決策があります。

すでに知っているように、メインブランチから機能ブランチへの修正の取得に関しては、それらの特定のコミットを選択するのが最善です。ただし、メインラインで修正するのではなく、修正プログラムに対してもトピックブランチを使用することを好みます。そうすれば、それらの修正を、それらによってブロックされているすべての機能に適切にマージできます。

機能開発の履歴を可能な限りクリーンで直線的に維持するには、すべての共同作業者git pull --rebaseが更新を取得するために使用する必要があります。これにより、意味のないマージコミットが邪魔になりません。

コラボレーション機能ブランチを現在のメイン開発ブランチにリベースしたい場合(継続的インテグレーションテストまたはその他の目的で)、またはその履歴を他の方法で書き換えたい場合は、機能が完了/完了したら、マージの直前に行うことができます。メインブランチですが、新しい別のローカル/プライベートブランチで行う必要があります。

マスターからの新しいブランチでトピック上の変更(チェリーピックをスキップ)を再作成する方法は次のとおりです。

$ git checkout -b feature_final feature # jump to a new branch for grooming
$ git rebase [-i] master                # rebase topic changes onto master

そこから、リベースされたブランチをどうするかはあなた次第です— QAのためにアップストリームをプッシュするか、マスターに直接マージします(履歴で明示的にしたい場合は--no-ffを使用)。

于 2014-05-05T15:36:11.740 に答える
1

一人で作業している場合、リベースは何もしません。あなたはマスターに新しいことを何もコミットしませんでした。

あなたのマージは早送りのマージになります、そしてあなたはそれを全くチェックアウトしないことによってそれをすることができます

git push . HEAD:master

誰かと一緒に作業しているかどうかに関係なく、マスターにある作業を機能ブランチにマージすることは悪い習慣です。これはバックマージと呼ばれます。それが悪い理由は、あなたが今、原子的な作品を持っていないからです。マスターの歴史は今やあなたの機能と絡み合っており、リベースなど、この機能での作業は多くの状況で不可能になっています。

あなたはあなたの分岐戦略とあなたが達成したいことについて考える必要があります。これが私のものです:

http://dymitruk.com/blog/2012/02/05/branch-per-feature/

各ブランチが同じ場所から始まっていることがわかります。個別の統合ブランチとリリース候補ブランチがあり、必要な機能を汚染せずに組み合わせることができます。

ある機能で同僚と共同作業する場合、それは機能の大きさ(作業の粒度)によって異なります。大きい場合は、上記のプロセスを機能自体に適用し、代わりにタスクごとに分岐することができます。

それが小さな機能である場合は、そのブランチをマージまたはリベースできます-それはそれほど重要ではありません。この時点で、それはチームが快適であることに帰着します。

于 2012-06-29T22:44:07.483 に答える