6

この問題を抱えているGITユーザーがたくさんいると確信しています:

  1. master からブランチを作成します。これをfeatureXと呼びましょう。
  2. どこかで、 featureXに取り組んでいるときに、以前のコミットの修正を行いたいことに気付きました:
    • 修正をコミットします。
    • リベースとスカッシュ/フィックスアップを行います。
  3. 後で、マスターに対してリベースして、最新の変更をfeatureXに組み込みたいとします。
  4. ブランチが分岐したため、問題が発生しました (マスターで修正が行われませんでした)。あなたは悪い日を過ごしています。

これが私に起こったのはこれが2回目です。最初は、 featureXの歴史があまりなく、 masterから新しいブランチを作成しただけでした。これについてどう思いますか?これをどのように解決しますか?git reset特定のリログは可能ですか?その場合、リベースを元に戻し、修正コミットをfeatureXの上に戻すことができます(対話型リベースを使用)。

いろいろな方法があると思いますが、これは一般的な問題だと思います。

4

1 に答える 1

2

はい、ブランチを以前にチェックアウトしたもの (reflog) にリセットできます。フィックスアップはまだ FeatureX にあるため、リベースはフィックスアップを行わない場合と同じように動作します - master の分岐が featureX ブランチのいずれかのコミットと競合するかどうかだけが問題になります - フィックスアップかどうか。

第二に、人々が最初に git を学ぶとき、リベースのすばらしさに夢中になります。しかし、私は合併に戻りました。それはより単純で、それは起こったように歴史を記録し、ある程度の規律を強制します。ここに私のワークフローがあります: http://dymitruk.com/blog/2012/02/05/branch-per-feature/

于 2012-07-12T04:52:48.740 に答える