おそらく「公開リポジトリにプッシュしたコミットをリベースしないでください」という罪を犯して、gitリポジトリをめちゃくちゃにしてしまったようです。
シナリオは次のとおりです。
- master ブランチのアップストリーム リポジトリからの変更を追跡し、自分の変更を devel というブランチに保持しています。
- アップストリーム リポジトリに変更があった場合は、これを master ブランチにプルします。
- 次に、devel をチェックアウト
rebase master
してから、master ブランチに独自の変更を加えます。これにより競合が発生し、いくつかのコミットで次のエラー メッセージが表示されます (例として、以下にそのうちの 1 つだけを含めます)。
パッチ適用ベースと 3 方向マージにフォールバックしています... 自動マージ public/scala/qscript/org/broadinstitute/sting/queue/qscripts/AlignWithBWA.scala CONFLICT (コンテンツ): public/scala/qscript/org でのマージの競合/broadinstitute/sting/queue/qscripts/AlignWithBWA.scala 変更のマージに失敗しました。パッチは 0038 で失敗しました インデックス ファイルのチェックを追加しました。
この問題を解決したら、「git rebase --continue」を実行します。このパッチをスキップしたい場合は、代わりに「git rebase --skip」を実行してください。元のブランチをチェックアウトしてリベースを停止するには、「git rebase --abort」を実行します。
- 次に
git rebase --skip
、問題の原因となっているコミットをスキップするために使用し、最終的に必要なコードに行き着きます。
さて、問題は、リベースするたびに、この手順を実行する必要があることです。将来同じ競合が発生しないようにする方法はありますか? 私の考えはpush --force origin devel
、競合を引き起こすコミットなしでリモートリポジトリの履歴を上書きするために使用することです。これは行く方法ですか?または、この問題を解決する他の方法はありますか?