1

コンテキストcrazy-idea:専用のサブディレクトリでいくつかのワイルドなことを行った実験的なブランチがありmadness/{src,docs}ます。プロットを作成するためのメモ、写真、ハッキーなスクリプトを含む大量のコミット。自分が何をしているのかを完全に理解したので、src/新しい関数を追加して既存の関数を変更することにより、実際のソースファイルを編集します。

混乱するとマスターの履歴が乱雑になるため、変更をマスターにマージするためにcrazy-idea新しいブランチが作成されました。Convinceは、ファイルを変更して、からコミットを選択することを提案します。good-ideasrc/src/crazy-ideagood-idea

今私の質問good-idea:それがマスターにマージされ、このイベントの後にいくつかのコミットがマスターで行われたことを考えると。crazy-idea私のアイデアの他の側面をさらに解明するために戻ったときsrc/、マスターにリベースするときに予想される問題はありますか?

別の方法は、そのままsrc/にしcrazy-ideaて、サブディレクトリのコピーを作成し、で直接コーディングしながらこの方法でメモを確認することgood-ideaです。

あなたたちは何がより賢いことを提案しますか?

編集まあ、予想通り、私は中に競合が発生しました

git rebase master

crazy-idea。将来的には、1つのブランチにのみ変更を導入し、それが多かれ少なかれ放棄されていることがわかっている場合にのみチェリーピッキングを使用します。

編集私は次のように私の状況を解決しました:の変更でN個のコミットがありましたsrc/。最後のsrc/変更されていないコミットに「foobar」というメッセージがあったとしましょう。リベースが失敗した後:

$ git rebase --abort
$ git reset --hard HEAD^
HEAD is now at ...
# more hard resets, I think actually N
HEAD is now at ... foobar
$ git rebase master
First, rewinding head to replay your work on top of it...
Applying ..
...

終わり。これは明らかに私が望んでいたほど簡単ではありませんが、それほど悪くはありません。コピーする代わりにこのルートに行くと思いますmadness/

4

1 に答える 1

2

Gitは、チェリーピックの調整にそれほど問題はないはずです。リベースするとき、Gitは、ターゲットブランチにすでに導入されている変更を導入するコミット(およびコミットの差分内のハンク)を無視します。

于 2011-08-28T18:17:26.953 に答える