web-dev-qa-db-ja.com

gitflowを使用する際にクリーンなgit履歴を維持する-開発時のマージされていないコミット

Gitflowを使用して、release-1.0.0ブランチを作成し、それをmasterdevelopの両方にマージすると、両方のブランチでコミットが失われます。

  • masterには、release-1.0.0developにマージされたコミットはありません
  • developには、release-1.0.0masterにマージされたコミットはありません

代わりに、hotfix-1.0.1が作成されてmasterにマージされた後、developにマージされると、がマージをコミットしますは、release-1.0.0masterにマージされた以前のコミットを含みます。したがって、次のようになります。

User 'john doe' is trying to merge the following commits into 'develop' from 'hotfix-1.1.1'.

* merge release-1.0.0 to master
* merge release-1.1.0 to master
* Fix shopping cart critical bug

これが混乱しているように思える場合は、developが通常masterの背後にある2、3のコミットであることがわかります(ただし、理論的にはonlyが先である必要があります)メインブランチなので、これらのコミットはrelease-x.x.xからmasterへのマージです)。

クリーンな履歴を維持するには、これをどのように処理する必要がありますか?

私は、マスターと開発の2つの「メイン」ブランチを回避することをお勧めします。それは完全に説明されています ここ 、作者によってcactus-flowとブランド化されています。

Git-flowとは対照的に、いくつかの点が際立っています。

  • たった一つの本店
  • 早送りマージのみ

私にとって最後の1つは重要です。git-flowを長期間使用した後、--no-ffマージについて何が役に立つかまだわかりません。

ドキュメントにできるだけ近いgitflowをフォローしようとしています。 gitflowはすでに多くの多くの開発者に採用されているので、私はむしろ「hackz」のようなことはしたくないので、彼らはすでにこの単純なことの解決策を持っているはずです

私見それはあなたの大きな間違いです。可能な限りgit-flowを使用する理由はありません。それは何千ものプロジェクトで使われるかもしれませんが、あなたのプロジェクトに影響を与えません、それはそれを良くしません。

Git-flowは良い出発点ですが、逆にではなく、ツールとワークフローにそれを適応させることを考える必要があります。

4
Sergio Basurco