3

どういうわけかうまくいかなかったマージの後、Git リポジトリが破損したようです。私がしたことは:

  • git checkout<本店>
  • git merge<機能ブランチ>
  • Git Extension/kdiff を介して解決した多くの競合が発生しました
  • 最後の競合が解決された後、Git 拡張機能からコミットするかどうか尋ねられました。コミットする前にマージ結果をもう少し確認したかったので、「いいえ」と答えました。
  • 次に、IntelliJ の「プロジェクトの更新」を使用して中央リポジトリから最新の変更を取得し、今後の予定git pushが拒否されないようにしました。IntelliJ の「更新されたプロジェクト」はgit stash; git pull --rebase; git stash apply.

    「プロジェクトの更新」コマンドでは、警告、エラー、またはマージの競合は発生しませんでした。

    このステップが私の問題の原因であると推測しています.Gitは進行中のマージを追跡できませんでした.

  • 次に、マージをコミットし、中央リポジトリにプッシュしました

Git 拡張機能を使用してリポジトリ履歴を参照すると、次の 2 つの問題が発生します。

  • Git は、フィーチャー ブランチがメイン ブランチにマージされたことを認識していないようです。

    マージの結果は問題ありませんが、Git 拡張機能の分岐履歴のグラフィカル表現には、フィーチャー ブランチからメイン ブランチへの線が表示されません。私のマージ コミットのログ エントリは、通常の非マージ コミットのように、メイン ブランチからそのまま続きます。

  • 「git log -- <機能ブランチで変更されたファイル>」を実行すると、実際にファイルを変更したすべてのコミットのログ エントリが表示されません。

    一部のファイルでは、マージ前に機能ブランチで行われた変更のログ エントリが欠落しています。

    他のファイルについては、競合の解決中にファイルが変更されたにもかかわらず、マージ コミットのログ エントリが見つかりません。

    「git log --full-history」を使用すると、欠落しているログ エントリを確認できます。

何が問題なのか、問題を解決するために何ができるのか、誰か説明できますか? マージの競合を修正するのに数時間を費やしましたが、可能であれば、すべてをやり直さずにマージ結果を保持したいと考えています。

ありがとう!

4

0 に答える 0