どういうわけかうまくいかなかったマージの後、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」を使用すると、欠落しているログ エントリを確認できます。
何が問題なのか、問題を解決するために何ができるのか、誰か説明できますか? マージの競合を修正するのに数時間を費やしましたが、可能であれば、すべてをやり直さずにマージ結果を保持したいと考えています。
ありがとう!