1

のようなコミット履歴があり、のよう ここに画像の説明を入力なものにしたいここに画像の説明を入力EDIT : 履歴は一番下から始まり、一番上が新しいコミットです。

rebase/squashこれらすべてのコミットを「ここ」に置きたいと思います。または「こちら」の直前でも構いません。

編集:私がしたことは:

  1. 私は今、コミット「A」にいます
  2. git rebase -i here
  3. 単語を「スカッシュ」に設定し、最初の「ピック」は変更しません
  4. それは言っerror: could not apply c148 ...た。

そして、ステップ 2 の直後にエディタがポップアップgit rebaseして、青い線のコミットのみがリストされ、赤い線のコミットが表示されないのは奇妙です。

これを修正するにはどうすればよいですか?

PS:この回答は役に立つと思います。誰かがグラフィックの説明をすることができますか?

4

3 に答える 3

0

あなたの歴史は上から始まりますか?ブランチを「ここ」にリベースするとうまくいくはずです。おそらく、既にマージされている 2 つのコミットをスキップする必要があります。

これが機能しない場合は、詳細が必要です。特にあなたの写真のどのコミットがc148です...


リンクに関連して、「ここ」に新しいブランチを作成し、機能ブランチの残りの 4 つのコミットを選択することもできます。


編集:

「ここ」を超えてすべてのコミットを押しつぶしたい場合は、マスター ブランチ (または他のブランチが何であれ) をチェックアウトし、対話的に「ここ」にリベースする必要があります。エディターでスカッシュの「s」を選択します。

git checkout master
git rebase -i here

PS回答を追加して申し訳ありません。私の評判をすべて自分の質問に費やしてください。コメントすることはできなくなりました。

于 2013-02-18T08:35:14.210 に答える
0

次のようにインタラクティブなリベースを使用できます。

git rebase -i here^

ポップアップするエディターでpick、すべてのコミットの前のテキストを に変更しますs。最上位の commit() のみを変更せずに残しhereます - 必要がありますpick

于 2013-02-18T09:47:19.513 に答える
0

マージ コミットのリベースは退屈なことです。git resetより便利になると思います。

これを試して:

git reset --hard A
git reset --soft here
git commit -m -C here  // assume this is new-A

コメントで言ったように、A の後にいくつかの新しいコミットがあり、現在ブランチBにいるとします。master

次に、次のことができます。

git rebase --onto new-A A B
git checkout master
git reset --hard HEAD@{1}
于 2013-02-18T10:51:26.933 に答える