3

私は非常に奇妙な問題を抱えています.2つの別々のブランチがあり、単純なgit rebase --onto branchA tagOnMaster. これは、私の古い 32 ビット マシンで完全に機能していたスクリプトを介して行われます。新しい 64 ビット マシンに切り替えたところ、正常に動作しなくなりました。
git mix コミットのようです。
たとえば、最初のコミットでファイル a と b を変更し、2 番目のコミットでファイル c を変更する 2 つの連続したコミットがあります。現在、リベースは最初のコミットを正しく作成しますが、2 番目のコミットにはファイル c への変更と最初のコミットの変更の取り消しが含まれています。この元に戻された変更は、何らかの形でディスクに取り残され、3 回目のコミットで問題を引き起こします。

私はいくつかの画像が何が起こるかをよりよく示すと思います:

スペースを変更するだけの最初の元のコミット: 最初のオリジナルコミット

2 つの新しいファイルのみを追加する 2 番目の元のコミット: 2番目の元のコミット

最初のリベースされたコミット - これは正しいです: 最初のリベース コミット

しかし、今はおかしくなっています: 2 番目のリベースされたコミットには、新しく追加された 2 つのファイルに加えて、最初のリベースされたコミットの逆が含まれています。 2 番目のリベースされたコミット

その 2 回目のコミットの後、リベースは次のメッセージで続行できません。

Database/Scripts/Versions/2.0.0/PKG_BODIES/normalinvoices.sql: 更新
が必要 すべてのマージ競合を編集し、git add を使用して解決済みとしてマークする必要があります

ローカルの変更を見ると、コミット 1 からの変更が再びあることがわかります。 未段階の変更

これについての洞察をいただければ幸いです
これは既知のバグですか? 特徴? ! 私は何か間違ったことをしていますか?企業のウイルス対策プログラムが何らかの形でファイルをロックし、すべてを台無しにする可能性はありますか? しかし、ウイルス対策プログラムがファイルを本来よりも早くそこに置く方法がわかりません...
そして最も重要なことは、リベースを再び機能させるにはどうすればよいですか?

4

1 に答える 1

2

あなたの問題は、 rebase --onto を使用していることです。これは必要ではありません。「gitk --all &」のスクリーンショットを見て、この操作の結果として何が必要かを知っておくと役に立ちます。

Rebase --onto は、ブランチの一部を新しいベースに移動するコマンドです。

git-rebase ドキュメントから:

rebase --onto を使用して、あるブランチに基づくトピック ブランチを別のブランチに移植し、後者のブランチからトピック ブランチをフォークしたふりをする方法を次に示します。

まず、トピックが次のブランチに基づいていると仮定しましょう。たとえば、トピックで開発された機能は、次にあるいくつかの機能に依存しています。

o---o---o---o---o  master
     \
      o---o---o---o---o  next
                       \
                        o---o---o  topic

支部長から分岐した話題を作りたい。たとえば、トピックが依存する機能がより安定したマスター ブランチにマージされたためです。ツリーを次のように表示します。

o---o---o---o---o  master
    |            \
    |             o'--o'--o'  topic
     \
      o---o---o---o---o  next

これは、次のコマンドを使用して取得できます。

git rebase --onto master next topic

...

あなたの場合、最後の値は省略されているため、デフォルトで HEAD が使用されます。それがあなたに問題を引き起こしています。「rebase --onto」の構文と、単純なリベースに使用される省略形を混同していると思います。

git rebase master topic

この最後のコマンドは、実際には次のことを意味します。

git checkout topic # switch to topic branch
git rebase master # rebase topic branch on master

それが役立つことを願っています!

于 2012-07-24T17:16:12.600 に答える