Gitマージを中止する


119

VCSとしてGitを使用するプロジェクトに取り組んでいます。xyzマスターのメインラインの枝から枝を切りました。しばらく働いた後、コードをコミットし、ブランチのメインラインをプルしました。

プルは大丈夫でした。次に、コードをマスターとマージしました。マージ後、特定のファイルに問題が発生しました。マージ後にコードをコミットしていません。このマージを中止して、現在作業中のブランチをマージ前の状態にする方法を誰かがガイドしてくれませんか?



ブランチの以前のコミットを復元できませんか?
Wutipong Wongsakuldej


1
Gitでは、revertは以前のコミットでの変更元に戻す新しいコミットを作成するコマンドの名前であることに注意してください。そのため、ここで探している言葉ではない可能性があります。私がしている、編集明確にするためにあなたの質問を。
Scott Weldon

回答:


296

あなたがコミットしなかった限り、あなたはタイプすることができます

git merge --abort

コマンドラインが示唆するように。


4
これを試すと、次のメッセージが表示されました error: Entry 'MyFile.java' not uptodate. Cannot merge. fatal: Could not reset index file to revision 'HEAD'.
。– SMBiggs

1
@Ahmad gitは、(すでに追跡されたファイルの)コミットされていない変更が行われた状態でマージを開始しません。gitは知らないものを保護することはできません。
ティモシートラックル

はい、あなたは私のコードを失うことによってそれを学びました。ここに私の問題の詳細、私がどのように問題に陥ったのかを示します。stackoverflow.com/questions/55474092/how-to-undo-the-git-abort
Ahmad

23

マージの競合が発生しているときに「git status」を実行すると、最初にgitが示すのは、マージを中止する方法です。

マージの競合が発生している間のgitステータスの出力


これはgit reset HEAD <file>、git拡張ソース管理から「マージ」折りたたみ可能を効果的に削除することを提案しました=>次に、競合を解決するか、GIT拡張リストの変更を元に戻すことができます:)
jave.web

6

真実は、これをウェブ上ですでに行う方法を説明する多くのリソースがあることを教えてください:

Git:コミットをリバースマージする方法は?

Git:コミットをリバースマージする方法は?

Undoing Merges、Gitのブログ(archive.orgのWayback Machineから取得)

だから私はこれらのいくつかを要約するだけだと思います:

  1. git revert <merge commit hash>
    これにより、マージを元に戻したことを示す追加の「元に戻す」コミットが作成されます

  2. git reset --hard <commit hash *before* the merge>
    これにより、マージを行う前の履歴にリセットされます。マージ後にコミットした場合は、後でコミットする必要がありますcherry-pick

しかし、正直なところ、このガイドは、図で説明できるものよりも優れています!:)


1
リンクがなくなりました。はぁ。
SMBiggs

@ScottBiggsgit-scm.com/book/en/v2/…に移動したと思います。デニス、これを読んだら、チェックできる?そしてそれが本当に同じなら、あなたの答えのリンクを更新していただけませんか?ありがとうございました!
ファビオはモニカを元に戻す
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.